#022 いいコメント、悪いコメント

2022/3/16 ·

  • さあ始まりましたひまじんプログラマーでございますひまでーすひまですこのラジオはひまじんの中級エンジニアが送る駆け出しエンジニアをキャリアアップさせるラジオになってます頑張らせたいお願いしますはいというわけで今日もじゅんぺいをキャリアアップさせましょうかOKですぜひぜひ自己紹介中級エンジニアのかいちですはい同じくのりです赤ちゃんエンジニアのじゅんぺいですベビーはいというわけで今日はですね



  • ちょっと別の収録の時に激論が交わされたものについて話してたじゃあちょっとアンケート取ってみますかアンケート取りましょうか何の話をするかというと



  • コーディングにおけるコメントはいコメントアウトかコメントアウトについて話しましょうかちなみにコメントアウト取ってるよって人取ってるよ取ってるよって何ですかコメントアウトちゃんと書いてるよって人はい書いてます未熟者だないやいやいやそこはね諸説あるぞ諸説じゃあちょっと激論化をしていきましょうかはいはい



  • まず一旦駆け出しエンジニアの順平がどういうコメントをしているというかどういう時にしているとか聞きたいですそもそもコメントに対して一体何を感じているかとかねなるほどですねまず前提として僕がJavaを書いてます会社の研修でチーム開発みたいなのがあったので4人とかでやったんですけど1つのECサイトを使って



  • その時の話なんですけど基本的にはコメントは書いた方が分かりやすい例えばこのメソッドはこういう処理をするメソッドですJava.comとかもあってそうするとチーム開発なんで他の人がもちろん読むので分かりやすいのかなと思って



  • 最初は書いてなくて後々はこれメソッドわかりづらいから書いた方がいいねって言って後半で書くようになったんですよ最初はサボってたんですよみんな逆になんで書いた方がわかりやすいからいいなってなって書いてって最終的に僕の考えとしてはちょっとめんどくさいけど一周回ってやっぱり作業早くなってるんじゃないかっていうのは最終的には感じたんですねとりあえずそんな感じです僕なんかでも



  • いいんじゃない?チームで合意しての上だったら全然いいとは思いますねそこはかやちくんはどうですか?書くコメントですよね僕は基本的に書くコメントはまず一つはコピーライト書かないといけない時があるんでコピーライト書く時があるうちの会社で作ったコードだぜみたいなのが書けみたいなのがあるんで書くことがある



  • 僕今AIのロジックの部分のコードを触っていることが多くてその辺ってマジでわかんないんですよマジでなんでこういう実装になってるのみたいなのはちょっとわかんなすぎてあとは元のコードはこうなってるけどうちのユースケースだとこうしないと精度が出ないみたいなのがあったりするのでそういうところの意図とか背景みたいなコメントを残します



  • なるほどであともう一個今の既存のAIスクリプトのシステムの組み込みとかやってるんですけどコードを見てるとなんじゃこりゃみたいなもっとここできたやろみたいなのがめっちゃあるんですよはいはいただ時間なくてやりきれなくてはいはいここマジでいけてないから直してくださいっていうトゥールコメント残してますあーなるほどねはいはいなるほどカッコトゥールー○○○○みたいなはいはいはいはい



  • っていうのが僕が今コメントとして残しているものになってますねそれ以外はもう書かないなるほどこのメソッドはこういう処理をしていますみたいなコメントアウトはないそれは消す消せるやつは消すわかるように書こうっていうなるほどではあるなるほどね



  • 今完璧に同意しました。完全同意しました僕は。僕は、ただこれもう、うよ曲折あってこうなってるだけです。今はもうなんか、今そういう流れきてる。ノリさんも完全に同じです。同じことを言いました。言ったんですね。俺は実はノリさんに喋らされてただけかもしれない。福和術的な感じだったかもしれないですけど。僕はそんな感じですね。



  • そうねコメントに残すものはなぜっていう意図とアノテーションコメントだけですねちなみにアノテーションコメントって何ですかさっき言ってたto doとかですto doとかアノテーションコメントって調べるといろいろあるんですよto doとかhackとかいっぱいあるhackって何ですかリファクター必要だよみたいな目印へー



  • 多分VS Codeとかだとアノテーションコメントで残すとそのコメントの部分ちゃんと色変わるから便利だと思うちなみになんでそういう風にするんですか?なんて言うんでしょうその順平のなんかその例えばチームで合意してる方がいいと思うんですけどソフトウェアの動作を書かないっていうなんでなんですか?説明しましょうお願いしますそれはドライ原則に反しているからです



  • わからないドライはラジオでも言ってないかないやでもなんか聞いたタイミングありますDon't repeat your self同じことを繰り返し書くんじゃないよってことですつまりコードで読んでわかることをコメントに書いちゃよくないんですよなんでよくないかっていうとコメントってコードと比べてめっちゃね修正されにくいんですよ



  • どういうことですかまず最初第1版作りましたバージョン1書きましたとバージョン2になるにあたって関数書き換えましたとその時にコメントって書き換えられにくいんですよ忘れちゃう人が忘れられやすいそれが積み重なった結果コメントが信用できないみたいなことがいっぱい起きて最終的にはそのコメントのせいで騙されたりとかっていう被害が続出してるんですよそうなんですね



  • なんか長いソフトウェアあるあるというか長く使われてるとそうなるそうなんですねなので基本的に重複してると人間って一箇所しか直そうとしないんですよ動くしねそれでコメント別に直さなくても動いちゃうから本当に修正されにくくてバージョンとずれますよってことが起きるんですね



  • いやー経験ありますねあるんかいあるんかいそのチーム開発の時とかでもコード修正してコメントは修正し忘れてるみたいなのはありますねありますかありますねでも現場だとよりってことですよねそうだからコメントに残すべきは何をしてるかじゃなくてなぜやってるかを書くのがいいコードから読み取れないというか本当は読み取らせるのがいいんだけど



  • プログラマーの力量不足かプログラミング言語の表現力不足でそういうのはできないことはあるからWhy?Whyを書けとそういうことです勉強になりますそもそもそのメソッドが何にしてるかっていうのはそのメソッドを分かるように書けと元々そういうことですちゃんと例えば長い関数があったとするじゃんその関数って実は分割できるんですよ



  • 分割したらそこでさらに新しい関数名つけれるじゃないですかそれを組み合わせることによって何してるかを表現していくっていうか例えばなんでしょうねif有料会員だったら有料会員のフラグがフラグっていう変数がトゥルーになってるフラグっていう変数がトゥルーになってるは有料会員専用の何かをするっていうif文があったとしてif



  • フラグイコールトゥルー何々っていうのじゃあ何々ってなるけどそれを関数にして何ですかチェックif is paid userっていう関数にしてそうするとさっきのif文っていうのがis paid userっていう関数になるから見ただけでこれは有料簡易かどうかを確認してるんだっていう動作が読めるようになる



  • わかりやすいですね関数によって書き出すことによってそれをちまちまやっていくとコメントなくても言語を普通に英語を読むように読めるだろうっていう考え方ですねなるほどでも結構それができるならすごいよすごいプログラマーですそれはちゃんとしてる中級入ってます?中級入ってます



  • 中級の血が混じっている。 なんだら中級でもできない人いると思うよ。いると思う。 なんかちゃんとそのそれ系の本読んでないと多分触らないまま育ってますみたいな人いると思う。 別にそこまでやらなくても読めるしね。できてなくても動けば。 しかも怒られないしね。なんなら年齢が上がりにつれて行動について怒られることなくなるから。そいつがどんだけ書けなくても。 まあね。人間そういうもんなんで。



  • これは順平にはやってほしい。ぜひ。そうですね。勉強になりますね。ちなみにこの前ララベルのチュートリアルみたいなやつでクリーンコード書いていくよみたいなのがあったんですよ。海外の人で。その人見てたら既存のドックコメントグングン消してましたね。おしまい。消してたよ。そのコメントとかの話はやっぱりクリーンコードとかにも書いてある。あります。



  • 達人プログラマーにも書いてます達人プログラマーそうなんだドライは書いてますね確かにちなみにでもねドックコメント消すかどうかに関しては怪しい部分はあるあれってさIDEのサジェスチョン出すために使われてたりしない?知らん関数呼び出すときにカウンソル合わせたらふわっとその関数の使い方が出てくると思うんだけどあれ多分ドックコメント呼んでると思うんだよねそうですあれないと出てこないです



  • だからそれを使いたくて書くのはありかなとは思ってうんうんうんへーでも何をやってるかじゃなくて引数と返り値だけ書けばあってもんで意図が分かんないやつだけなぜそれを使うかみたいな理由を書くみたいなのがいいんじゃないかなというスマートですねスマートでしょうジャマダックはその使い方はよくしますねへー



  • JavaDocについてはマジで分かんないんで僕は何の口出しもできないんですけどJavaDocは多分俺も使ったことはないけど多分PHPDocと変わんないんだろうなと思いながら喋ってます一緒でしょどうせ勉強になりますというのでなんかそのね動くなんだろその親切心でコメントを残すっていう人いると思うんですよ見たことあるしこの人は丁寧に仕事しようとしてコメントめっちゃ書いてるなって思うことあるんですけどそれはひょっとしたら人によっては迷惑やでっていうのを



  • あと大学のプログラミング授業とか結構コメント残させる文化があるところはあるらしいよ僕は違かったんですけどそうなんですねなんかね新卒で入ってきた子でその情報系の人はなんか最初レビューくらった時にコメント残すなって言われてカルチャーショックでしたって言ってましたねそれはなんかそこの大学の先生がたまたまそうだっただけじゃないかな多分そうだったかな



  • 学生というか学者というか研究者とか大学の先生とかの書くコードは全然違いますからね質が違いそう研究者のコードだなっていう感じそうなんだ見たことはないですけどね初級エンジニアが用いりそうな話ですね結構やってそうやる絶対やるてかもう俺は通った1回結構あとちょっと若干外れるけど



  • 削除したいコードをコメントアウトすなって思うそれはわかりますどうせGitで管理して戻せるんだから消しなさいって思うこれ結構最初の人あるあるな気がするでもなんかこうもしその要はそこ消すってことは他の部分をちょっと作り直して新しいのを埋め込むとかしてることはあるじゃないですか同じような



  • コメントアウトしたブロックをもう一個作ってちょっと書き加えたのを動くかどうか試しに作っておいてみたいなうんうんうん念のため不安だからコメントアウトしたやつは残しておくみたいなやつを確かによくやっちゃうのでそれはそれでいいんだけどその後プッシュするなってそうそうそうそうGitに残すんじゃねーよってそこまでですねあるからね自分の手元でやる分には確かにGitでやろうがめんどいから



  • コメントアウト最初しといてみたいなのありだと思うんですけどそれをプッシュすなっていう使わないコードがコメントアウトでプッシュされることはよく見ますからね見るねちょっと気をつけていただいて逆にでもそれがいい例があってどういうケースかっていうとあんまないんですけどテストコードとかでこれ実行すると1時間かかるっていう1時間かかるっていうコードがあったりするんですよそんなコメントアウトしないで置いといて



  • 何も知らん人が実行してテスト全然終わらんって言ったらもう爆弾じゃないですかそんなそういうのは親切でコメントアウトしておく例がありますなるほどまあ確かになそれをGitで戻すのは面倒やもんねそうっていういいコメントアウトが稀にありますが基本的には使わんやつは消せとはいはいなるほどなあそれもやりますね有益ですねこれ初級エンジニアレベル上がりますね上がった上がった今回の回上がりますよかったよかった



  • そのためのラジオだからねでもこれはですねじゅんぺいが中級になった瞬間にもう何したらいいか分かんなくなるっていうねその頃にはきっと僕らが上級になってなるほどさらに引き上げるみたいないいですねみんなで成長していく上級ってむずいねそうですね何するんでしょうね



  • あといつになったらそう言っていいんだろうと分かんないですねそこの住み分けが分かんないですね中級初級でも分かんないですけど上級中級はさらにそれはちょっといずれ中級エンジニアを定義するエピソードを撮りたいなと思ってますそうじゃないと僕らも何話したらいいか定まんないと思うのでまあ



  • まあそれは後でじゃあ今日はコメントの話こんなもんですか?ですねはいまあなんでねやたらめって言ったらコメント書くのやめなさいとはいそういうことですドライですドライドライ大切にドックコメントは諸説ある諸説ありはいはいというわけで書くならYそう書くならYYとかアノテーションコメントでしたっけアノテーションコメントもあり勉強になりましたねなりましたはいコメントの話もありがとうございますこれちょっとまだまだネタあるんでコメント以外も



  • あるよね。 多分。ある。 期待ですね。今後に期待。 重たい本のそういうエッセンスだけをね、わかりやすくピッてやるのはいいかもね。 いいね。だって挫折しちゃうもんね。 挫折する。はい、というわけで今日はクリーンコードからめちゃくちゃ引用してきたんですけども、もっと知りたいよという人はクリーンコード読んでください。クリーンコード、おすすめすぎる書籍です。 ただしちょっとムズい。ムズい。なんでちょっと余裕がある人だけやってください。はい。じゃあ皆さん、良いコーディングライフを。バイビー!お疲れ様でしたー!



  • イマジンプラグラマーではメールを募集していますトークテーマ悩み要望などなど何でも募集中です宛先はhima pro 11 at mark gmail.comhimapro 11 at mark gmail.comになりますそれではまた次回

0:00 17:08

#022 いいコメント、悪いコメント