プログラミング初心者なんだが2回以上使う処理とかじゃなかったらわざわざ関数にする必要なくないか?

1 名前:ひみつの名無しさん 投稿日時:2020/05/15(金) 21:45:04.614 ID:p7fnBhykd
1回しか呼び出されない関数、メソッドの意味とは
2 名前:ひみつの名無しさん 投稿日時:2020/05/15(金) 21:45:29.107 ID:5h3RX9bva
見やすさのためだよ
3 名前:ひみつの名無しさん 投稿日時:2020/05/15(金) 21:47:06.886 ID:evI8TtHS0
処理に名前を付けてあげるためだよ
名前を付けたら正体が見破りやすくなるからね
4 名前:ひみつの名無しさん 投稿日時:2020/05/15(金) 21:47:10.800 ID:qbFQe/I80
何をするための関数なのかわかりやすい
5 名前:ひみつの名無しさん 投稿日時:2020/05/15(金) 21:48:32.815 ID:YlWVIBul0
なるべく手をかけて綺麗なソースをかけ
あとですごく助かることがある
7 名前:ひみつの名無しさん 投稿日時:2020/05/15(金) 21:50:30.527 ID:HFerJYKO0
可読性だ
場合によっては処理速度を落としてでも可読性を優先させるべき
8 名前:ひみつの名無しさん 投稿日時:2020/05/15(金) 21:50:35.586 ID:p7fnBhykd
なるほど
9 名前:ひみつの名無しさん 投稿日時:2020/05/15(金) 21:53:29.681 ID:V0NJeFfdx
ネストを浅くするため

for文やwhileのネストが2重以上になったらbreakやcontinueを駆使して
ループから抜け出す処理を組むのがめんどいけど
関数にするとreturnで一発で処理を抜けられる

11 名前:ひみつの名無しさん 投稿日時:2020/05/15(金) 21:56:54.928 ID:GYuQyHvFa
>>9
そんな目的で関数使うなや
処理に名前をつけるため、わかりやすさのため、テストしやすさのためならいいが
12 名前:ひみつの名無しさん 投稿日時:2020/05/15(金) 21:59:11.981 ID:V0NJeFfdx
>>11
ネストを浅くするのはわかりやすさのための基本テクぞよ
13 名前:ひみつの名無しさん 投稿日時:2020/05/15(金) 21:59:12.149 ID:RtYMNKpH0
>>11
いや、正しいよ
その処理に特定の意味があるならだけど
10 名前:ひみつの名無しさん 投稿日時:2020/05/15(金) 21:56:52.215 ID:8tPDpRni0
For i =1 to rowmax
For j = 1 to rowmax2
for k = 1 to rowmax3

俺こんな風にマクロ作ってるけどうざい?

14 名前:ひみつの名無しさん 投稿日時:2020/05/15(金) 22:00:15.136 ID:RtYMNKpH0
基本的に名前をつけれるものは関数にしていい
かつ状態を持たなければテストも確実になるからいいことづくめ
15 名前:ひみつの名無しさん 投稿日時:2020/05/15(金) 22:00:22.917 ID:5h3RX9bva
俺だったら多重ネストを抜ける時はgotoを使うね
好みの問題だけど
16 名前:ひみつの名無しさん 投稿日時:2020/05/15(金) 22:01:07.118 ID:iHGy/7JB0
>>15
っラベルつきbreak

使える言語限られてるけど

22 名前:ひみつの名無しさん 投稿日時:2020/05/15(金) 22:03:39.196 ID:BZ+9G3yh0
>>16
何これC#にも欲しい
17 名前:ひみつの名無しさん 投稿日時:2020/05/15(金) 22:01:52.371 ID:HFerJYKO0
後藤は存在しない言語もあるからなあ
18 名前:ひみつの名無しさん 投稿日時:2020/05/15(金) 22:02:42.834 ID:5h3RX9bva
ラベル付きbreakとかあるのか
Javaはやらんから知らなかったわ
23 名前:ひみつの名無しさん 投稿日時:2020/05/15(金) 22:04:00.727 ID:iHGy/7JB0
>>18
まあ実質gotoなんだけどねw
単にラベルを書ける場所とgotoの使える範囲が制限されてるから安全ってだけで
19 名前:ひみつの名無しさん 投稿日時:2020/05/15(金) 22:03:20.319 ID:TDD8Clkfp
カプセル化やぞ
20 名前:ひみつの名無しさん 投稿日時:2020/05/15(金) 22:03:20.350 ID:RtYMNKpH0
例外でgotoするC言語おじさんがいた
循環的複雑度何それ関数型何それの
アホみたいにネストした1000行関数とか作り出すやばいやつ
21 名前:ひみつの名無しさん 投稿日時:2020/05/15(金) 22:03:33.831 ID:V0NJeFfdx
Javaのラベル付きbreakやり方知ってるけど使ったこと無いわ
ラベルに名前を付けるのに労力を割くくらいなら
そのネーミングを関数に使ったほうが有意義じゃね?
24 名前:ひみつの名無しさん 投稿日時:2020/05/15(金) 22:04:19.236 ID:v7htBmEK0
breakよりもgotoの方が読みやすいと思うけど思考停止goto叩きが多くて悩む
初学者が多様してスパゲッティ化するのを防ぐために禁じてるのは分かるけどさ
25 名前:ひみつの名無しさん 投稿日時:2020/05/15(金) 22:08:23.619 ID:iHGy/7JB0
>>24
正しい使い方さえすれば何も問題ないんだよな
問題は『正しくない使い方もできる』ってだけで

アクセス修飾子がなくて基本的に全部publicになる、JSのクラスみたいなもん

26 名前:ひみつの名無しさん 投稿日時:2020/05/15(金) 22:12:41.828 ID:rPVNbavJ0
gotoの正しい使い方って多重ループ抜けるのは確かに許せるけど他あるか?
30 名前:ひみつの名無しさん 投稿日時:2020/05/15(金) 22:18:16.028 ID:v7htBmEK0
>>26
数値計算専門だとそれくらいしかないと思うけど、例外処理でも使うなあ
Linux OS読むような人はよく目にするんじゃないか
27 名前:ひみつの名無しさん 投稿日時:2020/05/15(金) 22:16:24.767 ID:V0NJeFfdx
ScalaとかJavaでもStreamAPIを使いだしたら使い捨ての関数だらけになる
29 名前:ひみつの名無しさん 投稿日時:2020/05/15(金) 22:17:07.922 ID:iHGy/7JB0
error2の上はdelete_fugaだな……まあわかるだろうからいいか
31 名前:ひみつの名無しさん 投稿日時:2020/05/15(金) 22:19:47.976 ID:3FwJw0ER0
テストできたりファイル分けられたり処理に名前つけられたりスコープを分けられたり
32 名前:ひみつの名無しさん 投稿日時:2020/05/15(金) 22:20:34.666 ID:1EScMxO10
全部自分一人で間違いなく作るなら問題ない
でもプログラムは肥大化しててチームで作るのが定石になってるよ
可読、再利用、テストのしやすさなんかを考えると関数化した方がいいよ
一人で作るちっちゃいプログラムを関数化するメリットはないよ
でもそれだと実務の設計の勉強にならないから勉強段階でも関数化すべしと言われるよ
33 名前:ひみつの名無しさん 投稿日時:2020/05/15(金) 22:21:40.354 ID:HFerJYKO0
>>32
一人でつくるから問題ないという発想は誤りだ
俺は1ヶ月前に書いたコードなんて覚えてない
35 名前:ひみつの名無しさん 投稿日時:2020/05/15(金) 22:22:46.130 ID:gUbtywkO0
可読性と拡張性が何よりも大事と痛感してる

コメント

タイトルとURLをコピーしました