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

■ このスレッドは過去ログ倉庫に格納されています

条件文、引数、戻り値指定について考えるスレ【(), [], return】

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

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

更に、戻り値のreturnの指定方法についても同時に考えるスレです。
(或いは、break, continueなど)

2 :デフォルトの名無しさん:2016/12/31(土) 19:14:27.22 ID:2NsOdIiQ.net
> プログラマが頭を使う部分、オリジナリティを発揮できる部分

それは名前

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

そこが一番オリジナリティをはっきりできる場所だ。
それすらわかってない素人は引っ込んでろ

3 :デフォルトの名無しさん:2016/12/31(土) 19:16:46.22 ID:2NsOdIiQ.net
ぶっちゃけ関数の中なんて適当でいい。

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

そのインターフェースが適切かどうかを判断する
方法の一つが、適切な名前であるかどうかでもある。

4 :デフォルトの名無しさん:2016/12/31(土) 19:18:29.21 ID:2NsOdIiQ.net
関数、クラスなどのインターフェースが適切であれば
テストコードを容易に書くことができる。

テストコードがあれば、中身は後からシンプルに変えることもできる。
重要なのは中身ではなくてインターフェス

5 :デフォルトの名無しさん:2016/12/31(土) 19:18:50.97 ID:pO5qSVhA.net
MZ何とかじゃねーの?
こんなんコンパイラ作りたいと思ってるあほ以外興味ないやろ

6 :片山博文MZ ◆T6xkBnTXz7B0 :2016/12/31(土) 19:25:30.86 ID:JCMJkH4b.net
ワガハイ デハ ナイ。

7 :デフォルトの名無しさん:2016/12/31(土) 19:25:47.13 ID:2NsOdIiQ.net
そもそも従来の if() for() while() は使わない時代になっている。
関数型の文化が取り入れらてきた結果
条件分岐やループを使う機会そのものが減っている。

アルゴリズムと呼ばれるものはたいていライブラリ化されそれを呼ぶだけ。
関数は数行程度にするべきだし、そこにオリジナリティを発揮するようなコードが
出てくることは殆ど無い。シンプルを追求するわけだから、最小のコードに収束する

8 :デフォルトの名無しさん:2016/12/31(土) 19:43:41.18 ID:CS9EEzAV.net
2NsOdIiQへの反論
そのオブジェクト指向の構造も突き詰めれば
if() for() while() を使用した基本構造からな成り立っている。
各言語や、ライブラリ毎に別々の名前別々の文法が定義され
言語や仕様が変われば、その「名前」や文法は毎回覚えなければ
ならない。それらが滞りなく動くには、それなりに繋げなければ、
ならないし、「繋げる」ためには細かくて複雑で、なおかつ
時と共に変化しやすいルールを沢山覚えなければならない。
それは仕様やルールに支配されている状態と言えるだろう。
それらも大切じゃないわけではないと思う。だけど
2NsOdIiQの意見にはは真っ向から批判したいと思う。

9 :デフォルトの名無しさん:2016/12/31(土) 19:47:27.84 ID:+3Mz6rOl.net
マ板でやれ

10 :デフォルトの名無しさん:2017/01/01(日) 00:16:22.10 ID:yOnXwyd5.net
>>8
それで批判はまだ?

11 :デフォルトの名無しさん:2017/01/01(日) 13:54:13.08 ID:IDYigKuX.net
if() 等の分岐はオブジェクトの多態性(OOPの特性)で、for() の主要な用途である要素の列挙処理も
for() を使わずに配列などのコレクションに対する直接的な作用として記述可能(関数型の影響)で、
さらに、if() for() while() が他と関数(オブジェクト指向の場合はメソッドと呼ぶが)と同様の呼び出し記述
(メッセージ送信)で済ませることが可能な Smalltalk 等の場合、記述は簡潔でルールも少ないまま保たれているよ

12 :デフォルトの名無しさん:2017/01/01(日) 17:12:28.54 ID:SJYwRSMl.net
2NsOdIiQは情弱

13 :デフォルトの名無しさん:2017/01/01(日) 22:22:13.84 ID:Eox67xHv.net
>>2
被らない名前さえ付けとけば、後でいくらでも変えられるから、適当で良い。

14 :デフォルトの名無しさん:2017/01/01(日) 22:24:04.06 ID:yOnXwyd5.net
>>13
名前をつけるタイミングは問題にしていない
最終的には一番重要な名前を正しくつけろという話だ

15 :デフォルトの名無しさん:2017/01/01(日) 22:24:56.15 ID:yOnXwyd5.net
被らない名前って連番かしら?w

func0001
func0002
func0003

16 :デフォルトの名無しさん:2017/01/01(日) 23:57:12.62 ID:SJYwRSMl.net
名前ってアルゴリズムやデータ構造より大事なん??
なぜ名前が重要?

17 :デフォルトの名無しさん:2017/01/02(月) 00:23:37.80 ID:PvWoAsR2.net
>>16
もしアルゴリズムやデータ構造に
名前がない所を想像してみればいい。

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

名前が適切でないと時間を無駄に費やすことになるんだよ。

18 :デフォルトの名無しさん:2017/01/02(月) 01:07:43.46 ID:BEa65uUQ.net
でも名前という殻ができたら、もう誰も中身を見ようとしないだろ?
名前
名前の名前
名前の名前の名前
場所の名前
名前の場所
場所の名前の場所
名前の場所の名前…

これが連鎖したら実際に動いている本体がなんなのか、どこにあるのか、何がしたいのか、
何が悪いのか、わからんくなるやろ。

19 :デフォルトの名無しさん:2017/01/02(月) 02:02:47.84 ID:PvWoAsR2.net
> でも名前という殻ができたら、もう誰も中身を見ようとしないだろ?

見れる状態であれば、見る必要があるときだけ見ればいい。
標準ライブラリの中身は見ないだろ

20 :デフォルトの名無しさん:2017/01/02(月) 02:03:47.65 ID:PvWoAsR2.net
可読性を高くするというのは言い換えると
見なくていいものを増やすということ

見ないでも分かるものが増えれば増えるほど
読むものが減る=可読性が高くなる

21 :デフォルトの名無しさん:2017/01/02(月) 02:13:28.17 ID:BEa65uUQ.net
そしたらさ、何よりつまらなくないか?
そして本当に動くのか最後この最後に確認できるまで不安にならないか?
そして、もし記述がちょっとでも間違ったらやはり、動かないだろ?
デバッグしようにもアルゴリズム的なデバッグとちがい、ひたすら「その名前のものは見当たらなかった」と格闘するだけだろ。

22 :デフォルトの名無しさん:2017/01/02(月) 02:40:58.61 ID:sbuuZSUp.net
人によって言語とか開発環境とか作ってる物とかチームや企業の方針とかのバックグラウンドが違うし、
みんな自分のバックグラウンドを前提に話すから話が?み合わない事は良くあるけどさ
>>21が良く分からない

23 :デフォルトの名無しさん:2017/01/02(月) 04:12:43.21 ID:PvWoAsR2.net
まだ小さなファイルに分割することを
知らない段階なんだろ

24 :デフォルトの名無しさん:2017/01/03(火) 22:54:15.37 ID:jYOP1H4c.net
>>1 が唯一頭を使う部分をきっぱりと明言しちゃったのに対し、
>>2 が食いついたせいで論点がずれ取るがな、
オブジェクト指向云々はさておき
それはさておきスマートな条件文を考えるのは大切っしょ。

25 :デフォルトの名無しさん:2017/01/04(水) 01:51:56.24 ID:M78fqhv6.net
> それはさておきスマートな条件文を考えるのは大切っしょ。
誰も賛同してないことに気づけよw

26 :デフォルトの名無しさん:2017/01/04(水) 21:31:57.62 ID:/ewDC4oi.net
スマートな条件文ってなにさ
if文書くなら誰が見てもわかる≒C言語を踏襲すべきだしスマートにするならhaskell的にもはやif文じゃなくなる
前提からして変なんだよ>>1

27 :デフォルトの名無しさん:2017/01/04(水) 22:49:19.43 ID:xL7XSQ6Y.net
とりあえず=> <= === != && || 使用禁止
この演算子使うやつは屑

28 :デフォルトの名無しさん:2017/01/05(木) 04:37:39.69 ID:G8Tvk5br.net
理由が書いてないルールは不完全。
不完全なルールは存在してないものとみなすべき。

29 :デフォルトの名無しさん:2017/01/06(金) 12:01:04.96 ID:Iab1DByP.net
理由はそういうルールと決めたから

30 :デフォルトの名無しさん:2017/01/07(土) 00:25:49.34 ID:jcRWOLCk.net
それはルールを決めた理由であって
ルールの理由ではない

31 :デフォルトの名無しさん:2017/01/07(土) 10:00:54.74 ID:J5F8f7k5.net
言語ごとに異なる演算子を使うのは
たしかに愚かなことだ

しかし、=> === 以外はデファクトスタンダードだよな?

32 :デフォルトの名無しさん:2017/01/07(土) 13:26:36.81 ID:jcRWOLCk.net
Rubyでは || は 変数が空だったら入れるというイディオムでよく使われている。
nilガードって名前がついているぐらい。

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

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

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

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

<= が使える言語なんてあるのか?

33 :デフォルトの名無しさん:2017/01/07(土) 20:05:40.15 ID:R19tnpIk.net
pythonのイテレータ文法とスライスが簡潔かつ最強

34 :デフォルトの名無しさん:2017/01/11(水) 11:44:23.20 ID:fVqO33jl.net
既知のキーワードで書けるLINQ文法こそ至高

35 :デフォルトの名無しさん:2017/05/25(木) 00:26:49.97 ID:DOX+5Pt+.net
>>32
<= は Verilog の代入で使う。

36 :デフォルトの名無しさん:2018/05/23(水) 22:42:31.84 ID:Au5e7VGg.net
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

ERUWP

37 :デフォルトの名無しさん:2018/07/04(水) 23:24:41.90 ID:gFgZc5FG.net
DAK

38 :デフォルトの名無しさん:2018/10/27(土) 17:00:28.02 ID:z2xID8Zb.net
()

39 :デフォルトの名無しさん:2018/12/05(水) 09:47:53.59 ID:OM2KUSVi.net
>>32
<= 使えないとどうやって「x が 10 以下」を表すんだよ?

40 :デフォルトの名無しさん:2018/12/07(金) 11:25:35.96 ID:BUuGF4Ds.net
-le

総レス数 40
11 KB
掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★