X



条件文、引数、戻り値指定について考えるスレ【(), [], return】 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
2016/12/31(土) 19:12:39.83ID:CS9EEzAV
プログラマが頭を使う部分、オリジナリティを発揮できる部分が、
()の中と、
[]の中だけであって、
その他の部分は、よくよく考えると「決まりに忠実に従うだけ」
のような気がする。

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

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

それは名前

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

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

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

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

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

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

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

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

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

見れる状態であれば、見る必要があるときだけ見ればいい。
標準ライブラリの中身は見ないだろ
0020デフォルトの名無しさん
垢版 |
2017/01/02(月) 02:03:47.65ID:PvWoAsR2
可読性を高くするというのは言い換えると
見なくていいものを増やすということ

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

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

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

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

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

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

<= が使える言語なんてあるのか?
0033デフォルトの名無しさん
垢版 |
2017/01/07(土) 20:05:40.15ID:R19tnpIk
pythonのイテレータ文法とスライスが簡潔かつ最強
0036デフォルトの名無しさん
垢版 |
2018/05/23(水) 22:42:31.84ID:Au5e7VGg
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

ERUWP
0037デフォルトの名無しさん
垢版 |
2018/07/04(水) 23:24:41.90ID:gFgZc5FG
DAK
0038デフォルトの名無しさん
垢版 |
2018/10/27(土) 17:00:28.02ID:z2xID8Zb
()
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況