2024-09-19

コードを綺麗にするのは読みやすくするためじゃない

https://type.jp/et/feature/26796/

もうホントこいつって害悪だと思う

コードを読むのが下手なエンジニアのためにコードを綺麗にするのは時間無駄かな、、と。

この発言にもあるように「コードを綺麗にする=読みやすくする」ってことだと勘違いしてる

コードを綺麗にするのは「バグを少なくする」ためであって読み手のためじゃない

グローバルに一文字変数を使って困るのは「どこでそれを触ってるか分からいから」であって「読みにくいから」ではない(まぁ読みにくいけど)

特に昔だとLintもないし変数の参照先を探すのはgrepぐらいしかなくて

$iとかだと$iiもひっかかるし$iの後ろにスペースがあったり無かったりするともう探すのは不可能に近くなる

それでも動いているなら最悪問題無いんだがバグ修正時にめちゃくちゃ困って

「作り直すしか無いな」

ってなるのでビジネス的にも大きな影響が出る

「どんなコードでも動くコードを作るのが正しい」「done is better than perfect完璧を目指すよりも、まずは終わらせることが重要) 」のスタンス効率的だろうなぁ、、と思うおいらです。

これも元の言葉意味曲解していて、「終わらせることが重要」というのはバグがあって良いわけじゃない

例えばログインボタン実装したときに、ユーザー名とパスワードに何を入れてもログインできる状態にするのも「終わらせること」だし

開発初期はとりあえず画面が必要なのでそれで良いかもしれない

ただこのままリリースできるわけではないし、プロダクトとしては「終わっていない」

パスワードを平文で保存して実装するのも「終わらせること」ではあるけれどそのままリリースしていいわけではないし

下手に動いてしまうとそのままリリースされたりもするのでよりタチが悪い

この言葉重要なのは「better than perfect」の方であって「done」の方ではない

全てを完璧にする必要は無い(し、そもそも完璧定義できない)ので「perfectでなくていいよ」というだけ

バグがあったり不十分だったりセキュリティ不備があって良いわけではない

毎日論理構成の中に浸ってる人は、推理小説は向いてるかもしれないですね。初期にちょろっと設定したグローバル変数が、最終的な結果に大きく影響してくるとか、「ここで使われてるのかー」みたいな感慨とか。

残念ながら「ああ、まともなコードしか読んできてないんだな」としか思えない

例えば「ユーザー名前と住所は設定できてるから性別を設定できるようにして」という依頼があって

コード確認してみるとuser1, user2, user3という変数が100個用意されていて、user1.name = 'hoge', user2.name = 'gaga' って感じで100行書いてあって、更に住所で100行あって、性別も同じように100行追加しろっていうコードを読んだことが無いんだろう

そしてそのコードのどこかで住所設定が間違えているか確認しないといけないような作業をしてないんだと思う

小説で言うと同じ文章が100ページ続いていて、その中のどこかの漢字が違っていて、そいつ犯人、みたいな推理小説面白いか?

他にも足したり引いたりこねくり回された変数値が最後に定数値で上書きされてたり、UserオブジェクトがいきなりWeatherのオブジェクトに置き換えられていて、name属性に晴れとか雨のデータが入ってたりしたことがないんだと思う

汚いコード伏線を回収しないし最終的に犯人も分からないし無駄に長いので推理小説には全く向いてない

で、やっぱりこういう汚いコード問題は「バグが混入しやすいかどうか」であって「読みやすいかどうか」ではない

下手するとuserオブジェクトを100行ずつ書いてくれてる方が読みやすさはあるかもしれないが

user36だけ住所が設定されていない」といったバグが混入し得るし、それを確認するのに多大な労力を必要とする

人間は誰もが間違いを犯すので誰もがバグを混入させる危険性があるんだけれど

その危険性は最大限まで下げるように努力するべきだし、インシデントを引き起こすことでビジネス的なインパクトも大きい

現場猫案件と似たようなもの事故は無くせないけれど、だからといって適当にやって良いわけじゃないし

「優秀なエンジニアは汚いコードですよ〜〜〜」

みたいなゴミ意見を広めるのは害悪しか無い

  • 全面同意だけど、まあ稀なケースとして、本当に天才的なプログラマのコードが絶望的に酷いということはあるんだよね…😟 だからって、免罪符にはならないけど… 自分で数学的なア...

    • ワイの知ってる超凄腕のプログラマーの人 変数名が全部abc…で読むのしんどい 長い変数名だと打つのに時間かかって作業効率が落ちるから嫌なんだって なんの変数だったかは自分では...

      • 本人しか理解できないコードは 他の人間が書いたり直したりできないから そいつがいなくなった時点でアウトだろ 開発の馬力も人間1人分しかでないし 技術仕様的に難しくて難解は許...

  • ハンガリアン記法は正義

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん