2ちゃんねる★スマホ版★■掲示板に戻る■全部1-最新50

条件文、引数、戻り値指定について考えるスレ【(), [], return】 [無断転載禁止]©2ch.net

1 :
デフォルトの名無しさん
2016/12/31(土) 19:12:39.83 ID:CS9EEzAV
プログラマが頭を使う部分、オリジナリティを発揮できる部分が、
()の中と、
[]の中だけであって、
その他の部分は、よくよく考えると「決まりに忠実に従うだけ」
のような気がする。

そこで、言語を問わず、if() for() while() の()の中、
関数、クラスの () の中、
配列の[]の中などをどのように記述するかを議論したいと思う。

更に、戻り値のreturnの指定方法についても同時に考えるスレです。
(或いは、break, continueなど)
2 :
2016/12/31(土) 19:14:27.22 ID:2NsOdIiQ
> プログラマが頭を使う部分、オリジナリティを発揮できる部分

それは名前

クラス名、関数名、変数名
適切なファイルに適切なコードを書いて
適切な名前をつける。

そこが一番オリジナリティをはっきりできる場所だ。
それすらわかってない素人は引っ込んでろ
3 :
2016/12/31(土) 19:16:46.22 ID:2NsOdIiQ
ぶっちゃけ関数の中なんて適当でいい。

もちろんシンプルであるべきだけどそれは最善の場合であって
最低限、引数と戻り値というインターフェースが
適切であればそれでいい。

そのインターフェースが適切かどうかを判断する
方法の一つが、適切な名前であるかどうかでもある。
4 :
2016/12/31(土) 19:18:29.21 ID:2NsOdIiQ
関数、クラスなどのインターフェースが適切であれば
テストコードを容易に書くことができる。

テストコードがあれば、中身は後からシンプルに変えることもできる。
重要なのは中身ではなくてインターフェス
5 :
2016/12/31(土) 19:18:50.97 ID:pO5qSVhA
MZ何とかじゃねーの?
こんなんコンパイラ作りたいと思ってるあほ以外興味ないやろ
6 :
2016/12/31(土) 19:25:30.86 ID:JCMJkH4b
ワガハイ デハ ナイ。
7 :
2016/12/31(土) 19:25:47.13 ID:2NsOdIiQ
そもそも従来の if() for() while() は使わない時代になっている。
関数型の文化が取り入れらてきた結果
条件分岐やループを使う機会そのものが減っている。

アルゴリズムと呼ばれるものはたいていライブラリ化されそれを呼ぶだけ。
関数は数行程度にするべきだし、そこにオリジナリティを発揮するようなコードが
出てくることは殆ど無い。シンプルを追求するわけだから、最小のコードに収束する
8 :
デフォルトの名無しさん
2016/12/31(土) 19:43:41.18 ID:CS9EEzAV
2NsOdIiQへの反論
そのオブジェクト指向の構造も突き詰めれば
if() for() while() を使用した基本構造からな成り立っている。
各言語や、ライブラリ毎に別々の名前別々の文法が定義され
言語や仕様が変われば、その「名前」や文法は毎回覚えなければ
ならない。それらが滞りなく動くには、それなりに繋げなければ、
ならないし、「繋げる」ためには細かくて複雑で、なおかつ
時と共に変化しやすいルールを沢山覚えなければならない。
それは仕様やルールに支配されている状態と言えるだろう。
それらも大切じゃないわけではないと思う。だけど
2NsOdIiQの意見にはは真っ向から批判したいと思う。
9 :
2016/12/31(土) 19:47:27.84 ID:+3Mz6rOl
マ板でやれ
10 :
2017/01/01(日) 00:16:22.10 ID:yOnXwyd5
>>8
それで批判はまだ?
11 :
2017/01/01(日) 13:54:13.08 ID:IDYigKuX
if() 等の分岐はオブジェクトの多態性(OOPの特性)で、for() の主要な用途である要素の列挙処理も
for() を使わずに配列などのコレクションに対する直接的な作用として記述可能(関数型の影響)で、
さらに、if() for() while() が他と関数(オブジェクト指向の場合はメソッドと呼ぶが)と同様の呼び出し記述
(メッセージ送信)で済ませることが可能な Smalltalk 等の場合、記述は簡潔でルールも少ないまま保たれているよ
12 :
デフォルトの名無しさん
2017/01/01(日) 17:12:28.54 ID:SJYwRSMl
2NsOdIiQは情弱
13 :
2017/01/01(日) 22:22:13.84 ID:Eox67xHv
>>2
被らない名前さえ付けとけば、後でいくらでも変えられるから、適当で良い。
14 :
2017/01/01(日) 22:24:04.06 ID:yOnXwyd5
>>13
名前をつけるタイミングは問題にしていない
最終的には一番重要な名前を正しくつけろという話だ
15 :
2017/01/01(日) 22:24:56.15 ID:yOnXwyd5
被らない名前って連番かしら?w

func0001
func0002
func0003
16 :
2017/01/01(日) 23:57:12.62 ID:SJYwRSMl
名前ってアルゴリズムやデータ構造より大事なん??
なぜ名前が重要?
17 :
2017/01/02(月) 00:23:37.80 ID:PvWoAsR2
>>16
もしアルゴリズムやデータ構造に
名前がない所を想像してみればいい。

どうやって他人にそれを理解させる?
でてくるたびにコードを読まなければ
それが何かが理解できないだろ?

名前が適切でないと時間を無駄に費やすことになるんだよ。
18 :
デフォルトの名無しさん
2017/01/02(月) 01:07:43.46 ID:BEa65uUQ
でも名前という殻ができたら、もう誰も中身を見ようとしないだろ?
名前
名前の名前
名前の名前の名前
場所の名前
名前の場所
場所の名前の場所
名前の場所の名前…

これが連鎖したら実際に動いている本体がなんなのか、どこにあるのか、何がしたいのか、
何が悪いのか、わからんくなるやろ。
19 :
2017/01/02(月) 02:02:47.84 ID:PvWoAsR2
> でも名前という殻ができたら、もう誰も中身を見ようとしないだろ?

見れる状態であれば、見る必要があるときだけ見ればいい。
標準ライブラリの中身は見ないだろ
20 :
2017/01/02(月) 02:03:47.65 ID:PvWoAsR2
可読性を高くするというのは言い換えると
見なくていいものを増やすということ

見ないでも分かるものが増えれば増えるほど
読むものが減る=可読性が高くなる
21 :
2017/01/02(月) 02:13:28.17 ID:BEa65uUQ
そしたらさ、何よりつまらなくないか?
そして本当に動くのか最後この最後に確認できるまで不安にならないか?
そして、もし記述がちょっとでも間違ったらやはり、動かないだろ?
デバッグしようにもアルゴリズム的なデバッグとちがい、ひたすら「その名前のものは見当たらなかった」と格闘するだけだろ。
22 :
2017/01/02(月) 02:40:58.61 ID:sbuuZSUp
人によって言語とか開発環境とか作ってる物とかチームや企業の方針とかのバックグラウンドが違うし、
みんな自分のバックグラウンドを前提に話すから話が?み合わない事は良くあるけどさ
>>21が良く分からない
23 :
2017/01/02(月) 04:12:43.21 ID:PvWoAsR2
まだ小さなファイルに分割することを
知らない段階なんだろ
24 :
デフォルトの名無しさん
2017/01/03(火) 22:54:15.37 ID:jYOP1H4c
>>1 が唯一頭を使う部分をきっぱりと明言しちゃったのに対し、
>>2 が食いついたせいで論点がずれ取るがな、
オブジェクト指向云々はさておき
それはさておきスマートな条件文を考えるのは大切っしょ。
25 :
2017/01/04(水) 01:51:56.24 ID:M78fqhv6
> それはさておきスマートな条件文を考えるのは大切っしょ。
誰も賛同してないことに気づけよw
26 :
2017/01/04(水) 21:31:57.62 ID:/ewDC4oi
スマートな条件文ってなにさ
if文書くなら誰が見てもわかる≒C言語を踏襲すべきだしスマートにするならhaskell的にもはやif文じゃなくなる
前提からして変なんだよ>>1
27 :
デフォルトの名無しさん
2017/01/04(水) 22:49:19.43 ID:xL7XSQ6Y
とりあえず=> <= === != && || 使用禁止
この演算子使うやつは屑
28 :
2017/01/05(木) 04:37:39.69 ID:G8Tvk5br
理由が書いてないルールは不完全。
不完全なルールは存在してないものとみなすべき。
29 :
2017/01/06(金) 12:01:04.96 ID:Iab1DByP
理由はそういうルールと決めたから
30 :
2017/01/07(土) 00:25:49.34 ID:jcRWOLCk
それはルールを決めた理由であって
ルールの理由ではない
31 :
2017/01/07(土) 10:00:54.74 ID:J5F8f7k5
言語ごとに異なる演算子を使うのは
たしかに愚かなことだ

しかし、=> === 以外はデファクトスタンダードだよな?
32 :
2017/01/07(土) 13:26:36.81 ID:jcRWOLCk
Rubyでは || は 変数が空だったら入れるというイディオムでよく使われている。
nilガードって名前がついているぐらい。

&& はショートカット演算子ともいわれてこれまたよく使われる。

=== は言語によっては==の機能強化版になってるのでよく使われる。

!= はunlessがない言語ではこっちのほうが可読性が高い

=> はJavaScriptではアロー関数式、Perlではファットカンマだが
演算子として使われているのはしらない。

<= が使える言語なんてあるのか?
33 :
デフォルトの名無しさん
2017/01/07(土) 20:05:40.15 ID:R19tnpIk
pythonのイテレータ文法とスライスが簡潔かつ最強
34 :
2017/01/11(水) 11:44:23.20 ID:fVqO33jl
既知のキーワードで書けるLINQ文法こそ至高
12KB

新着レスの表示

★スマホ版★■掲示板に戻る■全部前100次100最新50

名前:E-mail: