コードの品質について、「なぜこのように書かれているのに、そうではないのか」という質問に出くわすことがよくあります。そして毎回説明します。だから、説明付きのメモを書くことにしました。
発生する2番目の質問は、「どこでこんなに美しく書くことを学んだのですか?」です。その答えは記事の終わりまでになります。
コードを書くときのかなり一般的な問題は、それが無地のテキストのように見え、読み取りだけでなく、さらなるメンテナンスも複雑にする問題領域が含まれていることです。このような場合、改行と追加の「スペース」文字の使用を怠ってはなりません。
私は実際の出来事についてのあごひげを生やした逸話を思い出しました:
開発者は次のように書かれたコードを読みます。
-今日:素晴らしいモダンでクールなコード!私はいつもそのように書きます!
-昨日:だから、ここでやめました。あはは!
-先週:私はそこで何をしていましたか?..
-先月:説明の問題はどこにありますか?
-昨年:このコードを書いた人の足を折る!
最近、私はそのようなコードに出会いました(外観を乱さないように写真を挿入します):
- , , ...
. . - .
. . , , ? , .
, .
- , - .
:
$salaryFirstBaseEmployer = $employer->salaryBases->first()->salary_base;
$salaryLastBaseEmployer = $employer->salaryBases->last()->salary_base;
$begin = Carbon::parse('2020-05-01')->startOfMonth()->startOfDay();
$end = $begin->clone()->endOfMonth()->endOfDay();
$endMonth = $begin->clone()->endOfMonth();
$startPeriod = new CarbonPeriod($begin, $end);
$endPeriod = new CarbonPeriod($begin, $end);
, , , :
$salaryFirstBaseEmployer = $employer->salaryBases->first()->salary_base;
$salaryLastBaseEmployer = $employer->salaryBases->last()->salary_base;
$begin = Carbon::parse('2020-05-01')->startOfMonth()->startOfDay();
$end = $begin->clone()->endOfMonth()->endOfDay();
$endMonth = $begin->clone()->endOfMonth();
$startPeriod = new CarbonPeriod($begin, $end);
$endPeriod = new CarbonPeriod($begin, $end);
:
, -, .
, .
PS: Habrの外部のメッセージを含む何人かの人々は、PSR、コードのオートコンプリート、IDEでのコードのフォーマット、cs-fixerなどがあるとすでに書いています。私が彼らの存在に気づいていないと本当に思いますか?記事で明らかにされた問題は、それらが使用されていないということではありませんが、他の開発者のオナラに火をつけずに最初に美しくコードを書くことを妨げるものは何ですか?..
PS2:たまたま、圧倒的多数のコメンテーターが記事の例を理解し、そのメインメッセージを評価しました。この点で、セマンティックな負荷と記事自体の重要性を持たないすべての例を削除しました。