プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお
Ruby on RailsについてはWEBプログラミング板で
前スレ
Ruby 初心者スレッド Part 60
https://mevius.2ch.net/test/read.cgi/tech/1493398918/
るりまサーチ (リファレンス検索)
http://rurema.clear-code.com/
Rubyist Magazine - るびま
http://jp.rubyist.net/magazine/
逆引きRuby
http://www.namaraii.com/rubytips/
Ruby 初心者スレッド Part 61 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
2017/08/25(金) 15:59:11.22ID:HsL9LVKJ
477デフォルトの名無しさん
2017/10/10(火) 22:58:25.38ID:b+0lfNgt478デフォルトの名無しさん
2017/10/10(火) 23:30:33.64ID:YB5j1JpR >Markdown → HTML 変換をする
これを行うアプリは、無数にあるから、自作する意味はない
Python のSphinx とか
これを行うアプリは、無数にあるから、自作する意味はない
Python のSphinx とか
479デフォルトの名無しさん
2017/10/10(火) 23:45:15.56ID:ACpNi8fa 練習ならむしろ自作しないと意味ない
480デフォルトの名無しさん
2017/10/11(水) 02:12:44.96ID:/FuCu7BT >>476
> rubyで関数型プログラミングを勉強しろって、何の冗談だ?
どうぞよんでくださいねw
可変性の回避 ― Rubyへの関数型プログラミングスタイルの適用
http://postd.cc/avoid-mutation-functional-style-in-ruby/
> rubyで関数型プログラミングを勉強しろって、何の冗談だ?
どうぞよんでくださいねw
可変性の回避 ― Rubyへの関数型プログラミングスタイルの適用
http://postd.cc/avoid-mutation-functional-style-in-ruby/
481デフォルトの名無しさん
2017/10/11(水) 06:27:37.55ID:2F1JnP4A482デフォルトの名無しさん
2017/10/11(水) 22:45:20.73ID:1IDk9wqH >>480
> 関数型プログラミングを勉強しろよ
って言っておきながら出して来たのが
> 可変性の回避 ― Rubyへの関数型プログラミングスタイルの適用
かよ。ほんと、なんの冗談だ?
そういう事は組織内のコーディング規約で決めればいい事で、
緩いプログラミングをしたくてrubyをいじってる俺に押し付けるな
それに全てのオブジェクトを不変なものとして扱えって書いてあるのに
ことさらに文字列だけをあげつらって
> 文字列をfreezeしない理由なんて無い
とかマジでお前が何を理解してるのか心配になりますね
> 関数型プログラミングを勉強しろよ
って言っておきながら出して来たのが
> 可変性の回避 ― Rubyへの関数型プログラミングスタイルの適用
かよ。ほんと、なんの冗談だ?
そういう事は組織内のコーディング規約で決めればいい事で、
緩いプログラミングをしたくてrubyをいじってる俺に押し付けるな
それに全てのオブジェクトを不変なものとして扱えって書いてあるのに
ことさらに文字列だけをあげつらって
> 文字列をfreezeしない理由なんて無い
とかマジでお前が何を理解してるのか心配になりますね
483デフォルトの名無しさん
2017/10/12(木) 02:12:49.23ID:bkFDlrr0 >>480
なんかのインスタンスを書き換えるの御法度、全部newでやれ、なんて記事出されても
新しい嫌がらせだなぁって思った
この記事の人の言ってることを正しいとするなら、Stringだとこうするしかないかも
temp_string = String.new(OldString, "append_a")
new_string = String.new(temp_string, "append_b")
前衛的なご発想をお持ちのようで
なんかのインスタンスを書き換えるの御法度、全部newでやれ、なんて記事出されても
新しい嫌がらせだなぁって思った
この記事の人の言ってることを正しいとするなら、Stringだとこうするしかないかも
temp_string = String.new(OldString, "append_a")
new_string = String.new(temp_string, "append_b")
前衛的なご発想をお持ちのようで
484デフォルトの名無しさん
2017/10/12(木) 02:13:49.80ID:bkFDlrr0 なんかキャメルとスネーク混ざったのなんでだろう、俺
JavaのStringBuilder思い出してたかも
JavaのStringBuilder思い出してたかも
485デフォルトの名無しさん
2017/10/12(木) 02:23:49.19ID:njn1yLjW >>483
"a" でも結局はnewしてるんで同じことだよ。
"a" でも結局はnewしてるんで同じことだよ。
486デフォルトの名無しさん
2017/10/12(木) 02:29:42.04ID:bkFDlrr0 >>485
ん、記事だと「 "a" + "b"」できるよとか書いてるのみてないのかしら
たぶん「そんなめんどくさい記法はいらね」ってレスかと思ったんだけど
となるとメモリ周りの扱いでイミュータブルかそうでないかの利点を挙げてもらわないといかんわね
ん、記事だと「 "a" + "b"」できるよとか書いてるのみてないのかしら
たぶん「そんなめんどくさい記法はいらね」ってレスかと思ったんだけど
となるとメモリ周りの扱いでイミュータブルかそうでないかの利点を挙げてもらわないといかんわね
487デフォルトの名無しさん
2017/10/12(木) 02:34:26.64ID:bkFDlrr0 たぶんシャローとかディープとかで足かまれるか
パフォーマンス問題のチューンでもなければ
すっげーどうでもいいのでさっさと動け
って話になりそうな気もするけど(90%の問題はコレ)
パフォーマンス問題のチューンでもなければ
すっげーどうでもいいのでさっさと動け
って話になりそうな気もするけど(90%の問題はコレ)
488デフォルトの名無しさん
2017/10/12(木) 02:36:38.72ID:bkFDlrr0 パフォーマンスの問題はchefかansibleでもありゃなんとでもなるでそ、サーバ乱設
chefが必要になるほど大規模な話にかかわったことないのがアレだけど orz
chefが必要になるほど大規模な話にかかわったことないのがアレだけど orz
489デフォルトの名無しさん
2017/10/12(木) 02:39:37.05ID:D7OLf+6g Rubyでゴリゴリの関数型で書く気しない
Rubyは動的型付けだから
コンパイラの型チェックなどのメリットが少なく
柔軟性を失って書きにくくなるデメリットが残る
Rubyは動的型付けだから
コンパイラの型チェックなどのメリットが少なく
柔軟性を失って書きにくくなるデメリットが残る
490デフォルトの名無しさん
2017/10/12(木) 02:42:27.30ID:njn1yLjW >>486
> ん、記事だと「 "a" + "b"」できるよとか書いてるのみてないのかしら
それがなんなん?
それは "a" という文字列を newして "b" という文字列をnewして
オブジェクト同士を加算する(イコール +メソッドを出している)という
意味のシンタックスシュガーなんだけど?
> ん、記事だと「 "a" + "b"」できるよとか書いてるのみてないのかしら
それがなんなん?
それは "a" という文字列を newして "b" という文字列をnewして
オブジェクト同士を加算する(イコール +メソッドを出している)という
意味のシンタックスシュガーなんだけど?
491デフォルトの名無しさん
2017/10/12(木) 02:52:30.38ID:bkFDlrr0 >>490
言い方が悪かったのかもしれんが
「イミュータブルであると、なぜ、誰にとって、どううれしいのか」
を説明してくれって言ってるわけだが
シンタックスシュガーとかぶっちゃけどうでもいいし
イミュータブルがどうとかもかなりどうでもいい(パフォーマンス問題が出ない限りは)
今の場合
「(aaa)という理由により、文字列をイミュータブルにすると
(bbb)という利点がプログラマーにあり
(ccc)という利点がユーザーにあります」
の
aaa と bbb と ccc 埋めてねってくらい
俺的にはxxxであるべきとかどうでもいいんですよ、そんなん主観的な感情論
言い方が悪かったのかもしれんが
「イミュータブルであると、なぜ、誰にとって、どううれしいのか」
を説明してくれって言ってるわけだが
シンタックスシュガーとかぶっちゃけどうでもいいし
イミュータブルがどうとかもかなりどうでもいい(パフォーマンス問題が出ない限りは)
今の場合
「(aaa)という理由により、文字列をイミュータブルにすると
(bbb)という利点がプログラマーにあり
(ccc)という利点がユーザーにあります」
の
aaa と bbb と ccc 埋めてねってくらい
俺的にはxxxであるべきとかどうでもいいんですよ、そんなん主観的な感情論
492デフォルトの名無しさん
2017/10/12(木) 02:59:54.14ID:0FMeS+81 >>485
そうしないようにfrozenで最適化したんでしょ。
そうしないようにfrozenで最適化したんでしょ。
493デフォルトの名無しさん
2017/10/12(木) 03:10:54.78ID:bkFDlrr0 んー、興味の対象が違うのかなぁ
ちょっぱやで書かしてくれる言語って意味でRuby使ってるようなところはあるので
ちょっぱやで書かしてくれる言語って意味でRuby使ってるようなところはあるので
494デフォルトの名無しさん
2017/10/12(木) 03:19:31.70ID:D7OLf+6g >ちょっぱやで書かしてくれる言語
>って意味でRuby使ってる
そうそう
Rubyは典型的なLLだからね
全部関数型で書きたければ
最初から関数型言語使うでしょ
>って意味でRuby使ってる
そうそう
Rubyは典型的なLLだからね
全部関数型で書きたければ
最初から関数型言語使うでしょ
495デフォルトの名無しさん
2017/10/12(木) 03:49:53.06ID:BE/Y4M/4 「Effective Ruby」の項目47 に書いてある。
ループ内のオブジェクト・リテラルを避けよう
ループの度に、オブジェクトが作られて、すぐにガベージになるから無駄。
オブジェクトをループの外に出すか、freeze するか
ARY = %w(a b c).map(&:freeze).freeze
p ARY #=> ["a", "b", "c"]
各要素をfreeze して、配列もfreeze する
Ruby 2.1 以降は、
"a".freeze
これで定数になる
ループ内のオブジェクト・リテラルを避けよう
ループの度に、オブジェクトが作られて、すぐにガベージになるから無駄。
オブジェクトをループの外に出すか、freeze するか
ARY = %w(a b c).map(&:freeze).freeze
p ARY #=> ["a", "b", "c"]
各要素をfreeze して、配列もfreeze する
Ruby 2.1 以降は、
"a".freeze
これで定数になる
496デフォルトの名無しさん
2017/10/12(木) 04:31:19.61ID:0FMeS+81 frozen_string_literal: true
497デフォルトの名無しさん
2017/10/12(木) 05:21:18.77ID:K4F4DzE/ 破壊的なのは全部!付きにしてくれたらよかったのに
498デフォルトの名無しさん
2017/10/12(木) 14:22:49.20ID:UWf9SeC0499デフォルトの名無しさん
2017/10/12(木) 14:23:59.29ID:UWf9SeC0500デフォルトの名無しさん
2017/10/12(木) 18:30:04.66ID:xdbkqR2O それはそれで冗長じゃねってオモ
501デフォルトの名無しさん
2017/10/12(木) 19:50:30.80ID:TdwSq1rR >>435 のスライドによるとruby4では
不変リテラル配列を @[1, 2, 3] で作れたり、
不変リテラルハッシュを @{ 'a' => 1, 'b' => 2 } で作れたり
出来るかもしれない
リテラル文字列も一律freezeなんてしないで @"string" っていう構文にすりゃよかったのに
不変リテラル配列を @[1, 2, 3] で作れたり、
不変リテラルハッシュを @{ 'a' => 1, 'b' => 2 } で作れたり
出来るかもしれない
リテラル文字列も一律freezeなんてしないで @"string" っていう構文にすりゃよかったのに
502デフォルトの名無しさん
2017/10/12(木) 20:21:23.42ID:D7OLf+6g >不変リテラル配列
Pythonのタプルじゃねーか
Pythonのタプルじゃねーか
503デフォルトの名無しさん
2017/10/12(木) 22:13:17.99ID:o8TlX9Z0 Pythonってタプルの実装は配列なの??
504デフォルトの名無しさん
2017/10/12(木) 22:28:59.06ID:apyXR2js タプルはタプル
行き当たりばったりなRubyとは違ってPythonにはシーケンスというプロトコルがあって、
タプルも配列もrangeも文字列もシーケンスなので統一的に扱える
行き当たりばったりなRubyとは違ってPythonにはシーケンスというプロトコルがあって、
タプルも配列もrangeも文字列もシーケンスなので統一的に扱える
505デフォルトの名無しさん
2017/10/12(木) 23:01:30.35ID:o8TlX9Z0 タプルはシーケンス!
それは他の言語と違うね
それは他の言語と違うね
506デフォルトの名無しさん
2017/10/13(金) 01:14:19.23ID:4cro6hGU おおっ! シーケンス! シーケンス!
言語機能として組み込まれ、特定の型のみに作用するなんて流石はパイソンだ
一方RubyにはEnumeratorが用意され、あらゆるクラス/オブジェクトに組み込めるのであった
言語機能として組み込まれ、特定の型のみに作用するなんて流石はパイソンだ
一方RubyにはEnumeratorが用意され、あらゆるクラス/オブジェクトに組み込めるのであった
507デフォルトの名無しさん
2017/10/13(金) 02:00:30.53ID:BCNZxjVm >>506
Pythonはジェネレータでクソ簡単にシーケンス作れるよ
Pythonはジェネレータでクソ簡単にシーケンス作れるよ
508デフォルトの名無しさん
2017/10/16(月) 17:23:10.90ID:DLEfDRSi a、bが配列の時、
a,sort + b とするとおかしくなる時があります。
文法上間違いなのでしょうか
(a.sort) + b で回避できますが
a,sort + b とするとおかしくなる時があります。
文法上間違いなのでしょうか
(a.sort) + b で回避できますが
509デフォルトの名無しさん
2017/10/16(月) 17:55:32.86ID:VwEzpL/B510デフォルトの名無しさん
2017/10/16(月) 19:31:26.51ID:VYP6d+8H >>508
実行可能な具体的なコードを出すと答える方も答えやすいよ
その上で何が起きるのか、本当はどうなって欲しいのかをあらかじめ言っておくとさらにいい
エラーが出るならばそのメッセージをつけて
一応聞いておくけど a,sort + b ってなってる部分はドットじゃなくてコンマなの?
実行可能な具体的なコードを出すと答える方も答えやすいよ
その上で何が起きるのか、本当はどうなって欲しいのかをあらかじめ言っておくとさらにいい
エラーが出るならばそのメッセージをつけて
一応聞いておくけど a,sort + b ってなってる部分はドットじゃなくてコンマなの?
511デフォルトの名無しさん
2017/10/17(火) 01:16:43.61ID:2ZuBshEM512デフォルトの名無しさん
2017/10/17(火) 01:28:33.52ID:7xVjwXXT なんかいろいろえーって感じ
513デフォルトの名無しさん
2017/10/17(火) 01:29:13.96ID:R2+/oC7k まともにタイプできんのか
514デフォルトの名無しさん
2017/10/17(火) 01:38:22.03ID:G9wCIPXR 確かにいろいろえーーって感じだが
とりあえずエラーの原因箇所はそこと違ったんじゃね
とりあえずエラーの原因箇所はそこと違ったんじゃね
515デフォルトの名無しさん
2017/10/17(火) 02:08:23.51ID:mcshzNIy516デフォルトの名無しさん
2017/10/17(火) 18:58:18.19ID:QpREnYGr redmine 関係のスレってない?
517デフォルトの名無しさん
2017/10/17(火) 19:01:44.02ID:mUW+58qQ 環境が分らないし、エラーの詳細もわからない
そもそもタイプミスでエラー起こしてる可能性もでてきた
これでどういう答えを出せと言うのか
そもそもタイプミスでエラー起こしてる可能性もでてきた
これでどういう答えを出せと言うのか
518デフォルトの名無しさん
2017/10/18(水) 17:37:04.21ID:Tt9aE97q519デフォルトの名無しさん
2017/10/18(水) 20:39:12.47ID:9LPwoyEe >>518
カッコは不要
'+' よりも '.' の方が結合強度が強い
演算子の優先順位については https://docs.ruby-lang.org/ja/latest/doc/spec=2foperator.html に書いてある
…………と思いきや、'.' が書いてねーじゃん
'::' と同じ優先度と思っていい
つまりだ、カッコをつけるつけないで挙動が変わるって言うなら
それ以前の所がおかしいのは確定的に明らか
カッコは不要
'+' よりも '.' の方が結合強度が強い
演算子の優先順位については https://docs.ruby-lang.org/ja/latest/doc/spec=2foperator.html に書いてある
…………と思いきや、'.' が書いてねーじゃん
'::' と同じ優先度と思っていい
つまりだ、カッコをつけるつけないで挙動が変わるって言うなら
それ以前の所がおかしいのは確定的に明らか
520デフォルトの名無しさん
2017/10/18(水) 20:46:38.65ID:cbmCwNcY そもそも問題の切り分けが出来てないっぽい
コード履歴取って一行ずつ変えて行けば
どこが原因か特定できるのに
コード履歴取って一行ずつ変えて行けば
どこが原因か特定できるのに
521デフォルトの名無しさん
2017/10/19(木) 20:29:50.54ID:L874x3oy522デフォルトの名無しさん
2017/10/20(金) 05:01:37.78ID:VjaZCXyR クラス毎にファイルわけたり、
多機能なクラスをシンプルなクラスに分けたりしてれば
おのずとエラー表示で何処が問題なのか分る
とは言っても、横着しちゃうのはあるあるだから、他人には言いづらい
多機能なクラスをシンプルなクラスに分けたりしてれば
おのずとエラー表示で何処が問題なのか分る
とは言っても、横着しちゃうのはあるあるだから、他人には言いづらい
523デフォルトの名無しさん
2017/10/20(金) 12:18:01.77ID:ICaMM6Vk Ruby自体が大クラス主義だけどね
バイナリデータもStringクラスで扱ってしまおうって考えは最たるもの
だからと言ってクラス/モジュールにちまちまと細分化しても
使う時にあれを使いたいこれを使いたいで結局ひとまとめにしちまうんだろうけど
さじ加減って大事だよな
バイナリデータもStringクラスで扱ってしまおうって考えは最たるもの
だからと言ってクラス/モジュールにちまちまと細分化しても
使う時にあれを使いたいこれを使いたいで結局ひとまとめにしちまうんだろうけど
さじ加減って大事だよな
524デフォルトの名無しさん
2017/10/20(金) 21:15:16.18ID:fTxZK5d3 昔rubyの本を読んだ時はさっぱり判らなかったけど、
perlとpythonが判った後で読んだら全部最初から知ってる感じになるな
perlとpythonが判った後で読んだら全部最初から知ってる感じになるな
525デフォルトの名無しさん
2017/10/20(金) 21:41:20.58ID:4/l8vBn9 大クラスでもメソッドは
粒度が細かい方が良いと思う
粒度が細かい方が良いと思う
526デフォルトの名無しさん
2017/10/21(土) 02:31:25.02ID:KRuC/jyb 枝分かれと繰り返しで素数判定プログラム書く課題出て適当にやってたらそれっぽいものができちゃったんだけど、なんで出来たの分からないから助けて
ソースは以下
def prime(n)
if n==0 || n==1 || n<0 then return 'Not Defined' end
i=2
while n%i>0 do
if i==n-1 then return 'true' end
i=i+1
end
return 'false'
end
ソースは以下
def prime(n)
if n==0 || n==1 || n<0 then return 'Not Defined' end
i=2
while n%i>0 do
if i==n-1 then return 'true' end
i=i+1
end
return 'false'
end
527デフォルトの名無しさん
2017/10/21(土) 02:44:37.46ID:KRuC/jyb528デフォルトの名無しさん
2017/10/21(土) 02:52:38.24ID:DH1cG8CY529デフォルトの名無しさん
2017/10/21(土) 03:42:48.43ID:W+SO0xqJ >>526
def prime(n)
return 'Not Defined' if n < 2
!(Range.new(2, n - 1).map{ |e| n % e }.include?(0))
end
Rubyっぽくないコードだったんで短く書き直してみた
def prime(n)
return 'Not Defined' if n < 2
!(Range.new(2, n - 1).map{ |e| n % e }.include?(0))
end
Rubyっぽくないコードだったんで短く書き直してみた
530デフォルトの名無しさん
2017/10/21(土) 06:35:15.86ID:/5Z1bcnO メモ化しろ。
つまり、答え(素数)をキャッシュする
11 を、[ 2, 3, 5, 7 ]の順番で割って、割り切れなければ、11は素数だろ。
まあ、正確には、11を、[ 2, 3 ]で割って、割り切れなければ素数だが
つまり、√11 までの素数で割って、割り切れなければ素数
つまり、答え(素数)をキャッシュする
11 を、[ 2, 3, 5, 7 ]の順番で割って、割り切れなければ、11は素数だろ。
まあ、正確には、11を、[ 2, 3 ]で割って、割り切れなければ素数だが
つまり、√11 までの素数で割って、割り切れなければ素数
531デフォルトの名無しさん
2017/10/21(土) 07:34:26.85ID:6mSBZ2Ul532デフォルトの名無しさん
2017/10/21(土) 07:57:33.68ID:QO4PPX4g533デフォルトの名無しさん
2017/10/21(土) 09:06:12.98ID:8VGNYjri 存在しない配列やハッシュに値を入れようとしたら、
初期化して入れてくれればいいのに
初期化して入れてくれればいいのに
534デフォルトの名無しさん
2017/10/21(土) 11:05:59.68ID:zW3TQJM1535デフォルトの名無しさん
2017/10/21(土) 13:58:53.09ID:AGKxZ0DW >>531
大クラス主義についてはmatzやko1が話してる
http://www.atmarkit.co.jp/news/200712/25/ruby.html
> まつもと 1.8にもEnumeratorとGeneratorという2つの似たようなライブラリが
> あったんですけど、それが1.9ではEnumeratorに統一され、組み込みになりました。
> ここら辺、ああ、Rubyはやっぱり“大クラス主義”だなって思いますね。
>
> ――大クラス主義とは?
>
> 笹田 似たような機能のものを大きなクラスにまとめるという方針です。
> たくさんあると覚えるのも大変だし、使い分けられないから、まとめちゃう。
大クラス主義についてはmatzやko1が話してる
http://www.atmarkit.co.jp/news/200712/25/ruby.html
> まつもと 1.8にもEnumeratorとGeneratorという2つの似たようなライブラリが
> あったんですけど、それが1.9ではEnumeratorに統一され、組み込みになりました。
> ここら辺、ああ、Rubyはやっぱり“大クラス主義”だなって思いますね。
>
> ――大クラス主義とは?
>
> 笹田 似たような機能のものを大きなクラスにまとめるという方針です。
> たくさんあると覚えるのも大変だし、使い分けられないから、まとめちゃう。
536デフォルトの名無しさん
2017/10/21(土) 16:41:36.24ID:fsyriQnf 言語の設計と言語の使い方は別だ
クラス毎にファイルをわけたり、多機能クラスをシンプルなクラスにわけたりするのを勧めたのは、
エラー表示が効果的になる言語の使い方の話だ
分ってると思うけどそれ外にも、ワンライナーや関数型等の書き方で使いこなせるようになっている
クラス毎にファイルをわけたり、多機能クラスをシンプルなクラスにわけたりするのを勧めたのは、
エラー表示が効果的になる言語の使い方の話だ
分ってると思うけどそれ外にも、ワンライナーや関数型等の書き方で使いこなせるようになっている
537デフォルトの名無しさん
2017/10/21(土) 18:01:16.00ID:ZBz0JWdz538デフォルトの名無しさん
2017/10/21(土) 18:33:01.23ID:AGKxZ0DW Ruby自体が大クラス主義だから利用者も大クラス主義であるべきだとは俺も思ってないよ
だからといって過剰な程にクラスを派生しまくるのは、型を束縛しないダックタイピングということもあって、
利便性が下がるんじゃないかなーとも思ってる
そりゃStringとHashとThreadが1つのクラスになっていたら発狂するけどね
だからといって過剰な程にクラスを派生しまくるのは、型を束縛しないダックタイピングということもあって、
利便性が下がるんじゃないかなーとも思ってる
そりゃStringとHashとThreadが1つのクラスになっていたら発狂するけどね
539デフォルトの名無しさん
2017/10/21(土) 21:09:41.23ID:6mSBZ2Ul540デフォルトの名無しさん
2017/10/21(土) 21:20:09.28ID:QO4PPX4g >>539
教条主義的なポリシーなんて要らないというポリシーなんじゃね?w
教条主義的なポリシーなんて要らないというポリシーなんじゃね?w
541デフォルトの名無しさん
2017/10/22(日) 00:40:32.24ID:kM4Rb+14 まだID変えて自演しとんのか
542デフォルトの名無しさん
2017/10/22(日) 01:31:42.03ID:dJ6mfyJW 大クラス主義の話になったところで
じゃあみんな具体的に
どれくらいの大きさのクラスにしてる?
目安は一クラスあたり何行?
じゃあみんな具体的に
どれくらいの大きさのクラスにしてる?
目安は一クラスあたり何行?
543デフォルトの名無しさん
2017/10/22(日) 02:36:33.83ID:sDdgCD4Q 多くても500行ぐらいだろうな。
1000行いったら嫌悪感が出る
1000行いったら嫌悪感が出る
544デフォルトの名無しさん
2017/10/22(日) 03:14:27.15ID:yCjESUvF 俺の場合はクラスの大きさに目安はないな
100行に満たないものもあれば1000行を超えるものもあるし
それよりもメソッド(Cなら関数)があまり長くならないように気をつけてる
具体的には80文字×25行のスクリーンからはみ出ないくらい
なんちって
100行に満たないものもあれば1000行を超えるものもあるし
それよりもメソッド(Cなら関数)があまり長くならないように気をつけてる
具体的には80文字×25行のスクリーンからはみ出ないくらい
なんちって
545デフォルトの名無しさん
2017/10/22(日) 03:14:46.78ID:rLFHcAK9 目安はサンディメッツルール
2017/10/22(日) 11:15:50.70ID:1YBr+HPt
深いネストのifがあって、Cだったら { に対応する } に飛べば範囲が判るけど、
rubyだとどうするの?
rubyだとどうするの?
547名無しさん@そうだ選挙に行こう! Go to vote!
2017/10/22(日) 11:21:48.06ID:ammmliXf >>546
rubynに限らず、エディターのプラグインで、対応するブラケットに飛ぶのが有る。
rubynに限らず、エディターのプラグインで、対応するブラケットに飛ぶのが有る。
548デフォルトの名無しさん
2017/10/25(水) 22:01:25.02ID:EQUdIXJ1 何も見ずに書けるくらいに慣れた言語はRubyが初めてで便利に使ってたんだけど、最近JavaというかKotlinやってた
んで戻ってきた
インスタンス変数が名前だけでアクセスし放題なのってすげえ便利だけどすげえ邪悪だな!
行く前はなんとも思わなかったけど@hogeとか生であちこち書いてあるとなんか不安になるようになったぞ!
んで戻ってきた
インスタンス変数が名前だけでアクセスし放題なのってすげえ便利だけどすげえ邪悪だな!
行く前はなんとも思わなかったけど@hogeとか生であちこち書いてあるとなんか不安になるようになったぞ!
549デフォルトの名無しさん
2017/10/25(水) 22:17:30.49ID:aatZ8FSF 要はattrでゲッターセッター使いまくりってことだよね
Rubyは便利だけどそれが時にかえって落とし穴になる
Rubyは便利だけどそれが時にかえって落とし穴になる
550デフォルトの名無しさん
2017/10/25(水) 22:17:41.41ID:J7YSmtyq railsの前からruby使いで今でもrails何それな人っているんだろうか
551デフォルトの名無しさん
2017/10/25(水) 22:22:21.34ID:Okq57FT4 このスレにはWinでRuby使ってる絶滅危惧種がちらほら生息しているみたいだから割といるんじゃないかな
552デフォルトの名無しさん
2017/10/25(水) 22:34:52.93ID:J7YSmtyq winでperlだとactiveperlが定番だけど、rubyだと何だろう
553デフォルトの名無しさん
2017/10/25(水) 23:12:44.96ID:0GYD+24d554デフォルトの名無しさん
2017/10/25(水) 23:26:24.82ID:6l1ALuPm555デフォルトの名無しさん
2017/10/25(水) 23:37:36.75ID:SowBE9iE >>553
インスタンス変数を直で使う可能性がわりと残ってるということ自体がキモいというのはあるにはある
それだと「いんすたんすへんすうはつかわないでください」と利用マニュアルやらコーディング規約やらに赤字で書くのと変わらんしな
インスタンス変数を直で使う可能性がわりと残ってるということ自体がキモいというのはあるにはある
それだと「いんすたんすへんすうはつかわないでください」と利用マニュアルやらコーディング規約やらに赤字で書くのと変わらんしな
556デフォルトの名無しさん
2017/10/25(水) 23:40:57.81ID:bjMRduYA winでrubyだけどUnicode引数が扱えないのと
パスにUnicodeが混じると動かないのは治った?
パスにUnicodeが混じると動かないのは治った?
557デフォルトの名無しさん
2017/10/25(水) 23:47:10.89ID:0GYD+24d >>556
そんくらい自分で試せよ
そんくらい自分で試せよ
558デフォルトの名無しさん
2017/10/26(木) 00:04:52.44ID:1jsCLZfy559デフォルトの名無しさん
2017/10/26(木) 00:27:50.55ID:Bn4jQy1s kotlinはインスタンス変数を直接作れないし触れない
同名のセッターとゲッター経由でのみアクセスする
Rubyでいうとこのattr_accessorだけしか存在しない状態
まあ他の言語の話はどこまでも広がるから程々に
同名のセッターとゲッター経由でのみアクセスする
Rubyでいうとこのattr_accessorだけしか存在しない状態
まあ他の言語の話はどこまでも広がるから程々に
560デフォルトの名無しさん
2017/10/26(木) 00:44:34.86ID:+U1JRDPb インスタンス変数を直接使うよりattr_readerとかattr_accessorを経由するようにしてるなあ
主にタイポ対策として
主にタイポ対策として
561デフォルトの名無しさん
2017/10/26(木) 00:52:35.48ID:1jsCLZfy @で直接インスタンス変数を使うか
アクセサを経由するかってことか
クラス内なら直接使ってもいいと思う
クラス外からアクセサを使う方が問題
アクセサを経由するかってことか
クラス内なら直接使ってもいいと思う
クラス外からアクセサを使う方が問題
562デフォルトの名無しさん
2017/10/26(木) 01:37:32.31ID:bdhLTBwb >>556
すべてのOS・言語で、
ユーザー名・PC名・パスなどのシステム要件には、半角英数字しか使うな。
誰も日本語ではテストしていないし、すべてのアプリでテストしていないから
半角空白も使うな。
「a b」などは、2つの引数に扱われてしまうから、バグる
Unicode の4バイト文字などには、多くのアプリが対応していない。
例えば、中国の地名の「深せん」の「せん」は、TeraPad では対応していない
こういうアプリが一杯ある。
特に、圧縮・解凍アプリでは、日本語のパスは使えない
すべてのOS・言語で、
ユーザー名・PC名・パスなどのシステム要件には、半角英数字しか使うな。
誰も日本語ではテストしていないし、すべてのアプリでテストしていないから
半角空白も使うな。
「a b」などは、2つの引数に扱われてしまうから、バグる
Unicode の4バイト文字などには、多くのアプリが対応していない。
例えば、中国の地名の「深せん」の「せん」は、TeraPad では対応していない
こういうアプリが一杯ある。
特に、圧縮・解凍アプリでは、日本語のパスは使えない
563デフォルトの名無しさん
2017/10/26(木) 01:51:18.80ID:1RkkpTof >>559
通常はプロパティのみで実体の変数にアクセスする場合に特別なキーワードを使う
https://kotlinlang.org/docs/reference/properties.html#backing-fields
>>560
privateなattr_accessor/attr_writerを用意するより
@fooのほうがインスタンス内部の状態にアクセスしてるのが直感的に見えるから個人的には好みかな
通常はプロパティのみで実体の変数にアクセスする場合に特別なキーワードを使う
https://kotlinlang.org/docs/reference/properties.html#backing-fields
>>560
privateなattr_accessor/attr_writerを用意するより
@fooのほうがインスタンス内部の状態にアクセスしてるのが直感的に見えるから個人的には好みかな
564デフォルトの名無しさん
2017/10/26(木) 01:57:55.82ID:1RkkpTof565デフォルトの名無しさん
2017/10/26(木) 07:56:59.67ID:BUcDTzfg ディレクトリツリーを再帰処理したときにディレクトリ名に“[]{}”があって
Dir.glob(File.join(subdir,"*")) # subdir = "photo[2017]"
てな感じでハマった
Dir.glob(File.join(subdir,"*")) # subdir = "photo[2017]"
てな感じでハマった
566デフォルトの名無しさん
2017/10/26(木) 08:30:22.65ID:Bn4jQy1s globは昔からへなちょこだよ
入ってるファイル名がglob安全だと事前にわかってるディレクトリにしか使ったらだめだよ
入ってるファイル名がglob安全だと事前にわかってるディレクトリにしか使ったらだめだよ
567デフォルトの名無しさん
2017/10/26(木) 11:34:08.16ID:v4GCj7LM 同意せざるを得ない
568デフォルトの名無しさん
2017/10/28(土) 05:14:14.61ID:3gpZJih/ winのRubyで日本語できないとか言ってる奴いるけど、
UTF16Nの文字コードも知らないで適当にやってるからじゃないの?
UTF16Nの文字コードも知らないで適当にやってるからじゃないの?
569デフォルトの名無しさん
2017/10/28(土) 11:08:15.45ID:YrbVG7kU 原因は一つだけじゃない
エンコ間違いを文字化けと言ってしまうくらい
知識が貧弱すぎる
エンコ間違いを文字化けと言ってしまうくらい
知識が貧弱すぎる
570デフォルトの名無しさん
2017/10/28(土) 11:16:36.37ID:xCMEGXaW 正確には、エンコードの推測間違いが文字化け
571デフォルトの名無しさん
2017/10/28(土) 11:19:57.77ID:YrbVG7kU それも違うよ
本来文字化けは通信回線のエラーで発生するものを指してた
本来文字化けは通信回線のエラーで発生するものを指してた
572デフォルトの名無しさん
2017/10/28(土) 11:56:59.11ID:outOme0N まず、環境変数やコマンドラインオプションの -E で utf-8 を指定しないと、ARGVがutf-8にならないので
正確なコマンドライン引数を取得できない*バグ*がある。
さらに、ディレクトリのファイル一覧を取得する時に、encodingオプションを指定してutf-8にしないと、
ユニコードのファイル名を取得できないという*バグ*がある。
作ってる人たちは仕様だと思ってるが、こんなの誰も嬉しくないし、単なるバグ。
だからrubyinstaller2の人も-Eutf-8をデフォルトにしようとした
ソースコードがデフォルトでutf-8の時代に、何でこんなことになってるのか理解しがたい
でもそれ以外のことは相当windowsのために頑張ってくれている
pythonよりマシでnode.jsより劣ってる
正確なコマンドライン引数を取得できない*バグ*がある。
さらに、ディレクトリのファイル一覧を取得する時に、encodingオプションを指定してutf-8にしないと、
ユニコードのファイル名を取得できないという*バグ*がある。
作ってる人たちは仕様だと思ってるが、こんなの誰も嬉しくないし、単なるバグ。
だからrubyinstaller2の人も-Eutf-8をデフォルトにしようとした
ソースコードがデフォルトでutf-8の時代に、何でこんなことになってるのか理解しがたい
でもそれ以外のことは相当windowsのために頑張ってくれている
pythonよりマシでnode.jsより劣ってる
573デフォルトの名無しさん
2017/10/28(土) 17:18:37.05ID:GkEAGE6K windowsならしょうがないね
574デフォルトの名無しさん
2017/10/28(土) 17:41:59.12ID:yTnVd91+ 根本的にスクリプトのパスをUnicodeで扱ってないから、スクリプトにlocaleで表せないUnicodeの文字が含まれるだけで実行できない糞仕様
575デフォルトの名無しさん
2017/10/29(日) 15:18:20.54ID:jMcUbzmZ やり方知らないだけじゃないの?
576デフォルトの名無しさん
2017/10/29(日) 18:20:39.60ID:cEiLc8+m やろうと思えばできる、とデファクトがデフォルトではない、との間には深くて深い溝が
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【次の一手】台湾問題で小林よしのり氏が私見「まさに戦争前夜」「ただちに徴兵制を敷いて、高市支持者を最前線へ」… ★5 [BFU★]
- 「母の部屋に安倍氏が表紙の機関誌が」「(安倍氏が被害者なのは)不思議に思いませんでした」山上被告の妹が証言 [おっさん友の会★]
- 【野球】大谷翔平、佐々木朗希、山本由伸らがWBC辞退なら広がる不協和音… 『過去イチ盛り上がらない大会』になる可能性も★2 [冬月記者★]
- 【news23】小川彩佳アナ「ここまでの広がりになるということを、高市総理はどれだけ想像できていたんでしょうね」 日中問題特集で [冬月記者★]
- 【国際】ロシアはすでに戦争準備段階――ポーランド軍トップが警告 [ぐれ★]
- 「町中華」の“息切れ倒産”が増加 ブームにも支えられ職人技で踏ん張ってきたが… 大手チェーンは値上げでも絶好調 [ぐれ★]
- 中国人「高市早苗が首相になってからの日本での中国人観光客の1日がこれらしいw」中国でバカウケ [165981677]
- 【高市売り】円安、止まらず!凄い勢いで暴落中。157円へ [219241683]
- 【悲報】ヤフコメ民「中国が水産物を輸入禁止にするなら、日本国民向けに安く販売すればいい。中国依存から脱するべき」 [153736977]
- >>3と>>5のワードを使ってai生成する
- 1,000万円のBMWに擦ってしまった札幌のガキ、捕らえられてガチで詰む [329329848]
- ガバガバなんだよ
