ホームページ >バックエンド開発 >PHPチュートリアル >優れたクリーンなコードを書くための 6 つのヒント

優れたクリーンなコードを書くための 6 つのヒント

ringa_lee
ringa_leeオリジナル
2017-09-17 10:05:171378ブラウズ

要約: 開発者として、クリーンなコードを書くことは非常に重要です。そのため、この記事では、著者は最初にクリーンなコードを書くことの利点をいくつか挙げ、次に開発者の参考研究のためにクリーンなコードを書くための 6 つのヒントを提案します。 ...

きれいなコードを書くのは簡単な作業ではなく、さまざまなテクニックや実践を試す必要があります。問題は、この問題には非常に多くの実践方法や手法があり、開発者が選択するのが難しいため、問題を少し単純化する必要があることです。この記事では、まずクリーンなコードを記述することの利点について説明し、次に最も一般的なクリーンなコードを記述するための 6 つのヒントまたは実践方法について説明します。

目次の内容は次のとおりです:

きれいなコードを書く利点
1. プロジェクトの開始と継続が容易になります
2.チーム内の新入社員のトレーニングに役立ちます
3.コーディング パターンに従いやすくします

きれいなコードを書くためのヒント
1.読みやすいコードを書く
2.変数、関数、メソッドには意味のある名前を使用します
3.各関数またはメソッドが 1 つのタスクのみを実行するようにします
4.コメントを使用してコードを説明します
5.コードスタイルの一貫性を維持する
6.コードを定期的にレビューしてください

クリーンなコードを書くことについてのいくつかの考え

クリーンなコードを書くことの利点

まず、クリーンなコードを書くことの利点のいくつかを理解しましょう。主な利点の 1 つは、クリーンなコードにより、コードを読んで理解するのにかかる時間が短縮されることです。乱雑なコードは開発者の速度を低下させ、開発者の仕事をより困難にします。コードが複雑になればなるほど、開発者がコードを使用できるようになるまでコードを完全に理解するのに多くの時間を費やす必要があります。コードが乱雑すぎる場合、開発者はコードを読むのをやめ、自分で最初からコードを書くことを決定する可能性があります。

1.プロジェクトの開始と継続が簡単になります
この問題を説明するための簡単な例から始めましょう。長い時間が経った後、おそらくその間にクライアントから別の仕事を依頼され、前のプロジェクトに戻ったとします。ここで、もし当時きれいなコードを書いていなかったら、最初にコードを見た後、どれほどひどく混乱しただろうかと想像してみてください。また、中断したところからコーディングを開始することがいかに難しいかがわかります。

つまり、以前に書いたコードを理解する必要があるため、プロジェクトにより多くの時間を費やす必要があります。最初からクリーンなコードを記述していれば、これは避けられたかもしれませんが、今ではその代償を支払わなければなりません。また、古いコードは非常に乱雑で悪いので、最初から始めることにするかもしれません。お客様はこれを聞いて満足しないかもしれません。

一方、クリーンなコードには通常、この問題はありません。前の例が逆で、前のコードがクリーンでエレガントだったとします。それを理解するのにどれくらい時間がかかりますか? おそらく、コードを読んですべてがどのように機能するかを理解するのに数分しかかからないでしょう。したがって、この場合に費やされるエネルギーは最初のケースよりも大幅に少なくなり、同時に顧客はあまり気にしなくなります。

これはクリーンなコードを書くことの最初の利点であり、これは自分のプロジェクトだけでなく、他の開発者の作業にも当てはまります。クリーンなコードにより作業が迅速に開始され、コードをじっくり検討するのに何時間も費やす必要がなく、すぐに作業に取り掛かることができます。

2. チームの新入社員のトレーニングに役立つ
きれいなコードを書くことのもう 1 つの利点は、1 つ目の利点と密接に関連しています。つまり、新入社員がコードをより簡単かつ迅速に使用できるようになります。開発者を雇う必要があるとします。開発者がコードを理解し、使い方を覚えるまでにどれくらい時間がかかりますか?もちろんこれは状況によります。コードが乱雑で書き方が不十分な場合、彼女はコードの学習により多くの時間を費やす必要があります。一方、コードがクリーンで読みやすく、理解しやすいものであれば、より早く作業を開始できるようになります。

他の開発者が彼女を助けることができるので、これは問題ではないと言う人もいるかもしれません。もちろんこれは正しいのですが、支援は 2 ~ 3 週間ではなく、2 ~ 3 回、または 1 ~ 2 日の短期間で行うべきです。そのため、別の開発者を雇うという決定は、私たちの作業を遅らせたり、彼女のコードの学習にもっと時間を費やすためではなく、作業をスピードアップするために行われました。

私たちがきれいなコードを書こうと努力すると、他の人も私たちから学び、それに倣ってきれいなコードを書くことが容易になります。もちろん、新しい開発者がコードを学び理解できるよう、まだある程度の時間を確保する必要があります。もちろん、数週間ではなく数日を意味します。さらに、クリーンなコードは、チームがより多くの開発者を参加させるのに役立ち、同時にコードを理解するのにも役立ちます。簡単に言えば、コードが単純であればあるほど、解釈が容易になり、誤解が少なくなります。

3.コーディング パターンに従いやすくなります
覚えておくべきことの 1 つは、コードの使用方法を理解することと学習することは同じことであるということです。ただし、これはほんの始まりにすぎず、開発者が私たちのコーディング モデルに従うことを確実にする必要もあります。もちろん、乱雑なコードよりもきれいなコードを使用した方が、この目標を達成するのが簡単です。チームはきれいなコードを書くだけでなく、そのパターンを長期間にわたって維持したいと考えており、これには長期的な思考も必要となるため、これは重要です。

また、開発者が現在のコーディング パターンに従っていない場合はどうなるでしょうか? この問題は通常、自然に解決できます。同じコードベースで作業している人のグループがあり、そのうちの 1 人が標準スタイルから逸脱し始めたとします。その後、チームの残りのメンバーがこの開発者に標準に従うよう促します。彼女はグループを離れたくないので、アドバイスを受け入れるつもりです。

開発者がチームの他のメンバーにコーディング パターンを採用して従うよう説得する状況もあります。開発者がよりクリーンでより良い結果につながるコーディング パターンを思いつくのは、確かに良いことです。実際、クリーンなコードを作成して維持するということは、コードを改善する機会を無視すべきということではなく、常に現在の実践に対して改善可能な姿勢を維持し、改善の機会を見つけるために懸命に努力する必要があると私は考えています。

したがって、開発者が現在のモデルから逸脱し、そのモデルの方が優れている場合は、変更を加えることが適切である可能性があります。したがって、他のパターンを試す前に他の人のコーディング方法を無視すべきではなく、改善の余地を探し続ける必要があります。最後に3つ目のシナリオです。開発者は、私たちのやり方を採用することも、彼女のやり方を採用するよう説得することも決めませんでした。なぜなら彼女はチームを離れることを決意するからです。

きれいなコードを書くためのヒント

ここで、きれいなコードを書く利点について説明することに加えて、この目標を達成するのに役立ついくつかのテクニックを学ぶ時間でもあります。以下に示すように、クリーンなコードはいくつかのメソッドで構成され、それに続きます。これらの方法により、コードがよりクリーンになり、読みやすく、理解しやすくなり、シンプルになります。もちろん、すべての方法を実行する必要はありません。1 つまたは 2 つの対策を実行して実行するだけで、良い結果が得られます。

1.読みやすいコードを書く
書かれたコードが機械解釈されるのは事実ですが、これはコードの読みやすさや理解しやすさを無視すべきという意味ではありません。私たちが書いたものを将来的に使用する人は常にいるからです。コード。たとえ他の人がコードにアクセスできないようにしたとしても、将来的には再びそのコードを入手できるようになる可能性があります。これらの理由から、コードを読みやすく理解しやすくすることは私たち自身の利益になります。では、どうすればそれを達成できるのでしょうか?

最も簡単な方法はスペースを使用することです。コードをリリースする前に縮小することはできますが、縮小されたように見せる必要はありません。代わりに、インデント、改行、空白行を使用して、コード構造を読みやすくします。この方法を選択すると、コードは大幅に読みやすく、理解しやすくなります。その後、コードを見ると理解しやすくなります。 2 つの簡単な例を見てみましょう。
コード:

// Badconst userData=
[{userId: 1, userName: 'Anthony Johnson', memberSince: '08-01-2017', fluentIn: [ 'English', 'Greek', 'Russian']},
{userId: 2, userName: 'Alice Stevens', memberSince: '02-11-2016', fluentIn: [ 'English', 'French', 'German']},
{userId: 3, userName: 'Bradley Stark', memberSince: '29-08-2013', fluentIn: [ 'Czech', 'English', 'Polish']},
{userId: 4, userName: 'Hirohiro Matumoto', memberSince: '08-05-2015', fluentIn: [ 'Chinese', 'English', 'German', 'Japanese']}];
// Betterconst userData = [
  {
    userId: 1,
    userName: 'Anthony Johnson',
    memberSince: '08-01-2017',
    fluentIn: [      'English',      'Greek',      'Russian'
    ]
  }, {
    userId: 2,
    userName: 'Alice Stevens',
    memberSince: '02-11-2016',
    fluentIn: [      'English',      'French',      'German'
    ]
  }, {
    userId: 3,
    userName: 'Bradley Stark',
    memberSince: '29-08-2013',
    fluentIn: [      'Czech',      'English',      'Polish'
    ]
  }, {
    userId: 4,
    userName: 'Hirohiro Matumoto',
    memberSince: '08-05-2015',
    fluentIn: [      'Chinese',      'English',      'German',      'Japanese'
    ]
  }
];

コード:

// Badclass 
CarouselLeftArrow extends Component{
render(){
return ( <a href="#" className="carousel__arrow carousel__arrow--left" onClick={this.props.onClick}> <span className="fa fa-2x fa-angle-left"/> </a> );}};
// Betterclass 
CarouselLeftArrow extends Component {
  render() {    return (
      <a
        href="#"
        className="carousel__arrow carousel__arrow--left"
        onClick={this.props.onClick}
      >
        <span className="fa fa-2x fa-angle-left" />
      </a>
    );
  }
};

2.为变量、函数和方法使用有意义的名称 
来看一看第二个技巧,它将帮助我们编写可理解和干净的代码。这个技巧是关于变量、函数和方法的有意义的名称。“有意义的”是什么意思?有意义的名字是描述性足够多的名字,而不仅仅是编写者自己才能够理解的变量、函数或方法。换句话说,名称本身应该根据变量、函数或方法的内容和使用方式来定义。 
代码:

// Badconst fnm = ‘Tom’;
const lnm = ‘Hanks’const x = 31;
const l = lstnm.length;const boo = false;
const curr = true;const sfn = ‘Remember the name’;
const dbl = [‘1984’, ‘1987’, ‘1989’, ‘1991’].map((i) => {  
return i * 2;
});
// Betterconst firstName = ‘Tom’;
const lastName = ‘Hanks’const age = 31;
const lastNameLength = lastName.length;
const isComplete = false;const isCurrentlyActive = true;
const songFileName = ‘Remember the name’;
const yearsDoubled = [‘1984’, ‘1987’, ‘1989’, ‘1991’].map((year) => {  
return year * 2;
});

然而需要注意的是,使用描述性名称并不意味着可以随意使用任意多个字符。一个好的经验则是将名字限制在3或4个单词。如果需要使用超过4个单词,说明这个函数或方法需要同时执行很多的任务,所以应该简化代码,只使用必要的字符。

3.让一个函数或方法只执行一个任务 
当开始编写代码时,使用的函数和方法看起来就像一把瑞士军刀,几乎可以处理任何事情,但是很难找到一个好的命名。另外,除了编写者,几乎没有人知道函数是用来做什么的以及该如何使用它。有时我就会遇到这些问题,我在这方面做的很不好。

然后,有人提出了一个很好的建议:让每个函数或方法只执行一个任务。这个简单的建议改变了一切,帮助我写出了干净的代码,至少比以前更干净了。从那以后,其他人终于能够理解我的代码了,或者说,他们不需要像以前一样花很多时间去读懂代码了,功能和方法也变得更好理解。在相同的输入下,总是能产生相同的输出,而且,命名也变得容易得多。

如果你很难找到函数和方法的描述性名称,或者需要编写冗长的指令以便其他人可以使用,那请考虑这个建议,让每个函数或方法只执行一个任务。如果你的功能和方法看起来像瑞士军刀一样无所不能,那请你执行这个方法,相信我,这种多才多艺不是一种优势。这是一个相当不利的情况,可能会产生事与愿违的结果。

附注:这种让每一个函数或方法只执行一项任务的做法被称为保持纯函数。这种编码实践来自于函数式编程的概念。如果你想了解更多,我推荐阅读《So You Want to be a Functional Programmer series[4]》。 
代码:

// Examples of pure functionsfunction subtract(x, y) {
    return x - y;
}function multiply(x, y) {
    return x * y;
}// Double numbers in an arrayfunction doubleArray(array) {
  return array.map(number => number * 2)
}

4.更容易遵循编码模式 
不管多么努力地为变量、函数和方法想出有意义的名字,代码仍然不可能完全清晰易懂,还有一些思路需要进行解释。问题可能不是代码很难理解或使用,相反,其他人可能不理解为什么要实现这个函数或方法,或者为什么要以特定的方式创建它。意思是,创建函数或方法的意图还不清楚。

有时可能不得不采用非传统的方法来解决问题,因为没有足够的时间来想出更好的解决方案,这也很难用代码来解释。所以,通过代码注释可以帮助解决这个问题,也可以帮助我们向其他人解释为什么写了这个方法,为什么要用这种特定的方式来写,那么其他人就不必猜测这些方法或函数的用途了。

更重要的是,当我们使用注来解释代码后,其他人可能会找到一个更好的方法来解决这个问题并改进代码。这是有可能的,因为他们知道问题是什么,以及期望的结果是什么。如果不知道这些信息,其他人就很难创建更好的解决方案,或者他们可能不会去尝试,因为他们认为没有必要去修改创建者自己的想法。

因此,每当自己决定使用一些快速修复或非传统的方法时,要用注释来解释为什么这么做。最好是用一两行注释来解释,而不用别人来猜测。

とはいえ、コメントは必要な場合にのみ使用する必要があり、貧弱なコードについては説明しないでください。コメントを無限に書いても、悪いコードをきれいなコードに変換することはできません。コードが悪い場合は、コードの使用方法に関する説明を追加するのではなく、コードを改善することで問題を解決する必要があります。きれいなコードを書くことの方が重要です。

5.コーディング スタイルの一貫性を維持する
気に入った特定のコーディング方法またはスタイルがある場合、私たちは常にそれをどこでも使用します。ただし、プロジェクトごとに異なるコーディング スタイルを使用するのは得策ではありません。また、自然に前のコードに戻ることもできないため、プロジェクトで使用されているコーディング スタイルを理解するのにはまだ時間がかかります。

最善の方法は、コーディング方法を選択し、すべてのプロジェクトでその方法に固執することです。そうすれば、古いコードに戻るのが簡単になります。もちろん、新しいコーディング方法を試すのは良いことであり、仕事を行うためのより良い方法を見つけるのに役立ちます。ただし、メインのプロジェクトではなく、さまざまなラボ プロジェクトや演習でさまざまなコーディング スタイルを試してみる方が良いでしょう。

また、実験を行うと決めたら、何度も試して、時間をかけて徹底的に行う必要があります。それが好きで快適であると本当に確信している場合にのみ、それを実装する必要があります。これを行うと決めたら、それをすべてのプロジェクトに適用するのが最善です。そうです、時間がかかりますし、正しく考えることも求められます。

6. コードを確認してください

これが最後のヒントです。単にきれいなコードを書くだけではなく、きれいなコードを維持するという最終的な作業も行う必要があります。コードを定期的にチェックし、改善を試みる必要があります。そうしないと、古いコードがレビューされ、更新されないと、デバイスと同じようにすぐに古くなってしまいます。コードを最高の状態に保ちたい場合は、定期的に更新する必要があります。

毎日使用するコードにも同じことが当てはまります。コードはより複雑でわかりにくいものになるため、これを避けてコードをクリーンな状態に保ちます。これを達成する唯一の方法は、コードを定期的にレビューすることです。言い換えれば、それを維持する必要があるのです。将来的に関心がなくなったプロジェクトの場合、これは必要ないかもしれませんが、他のプロジェクトにとっては、コードの保守は仕事の一部です。

クリーンなコードを書くことについてのいくつかの考え

今日説明した 6 つのプラクティスは、最も影響力があるわけではないかもしれませんし、最も重要でもないかもしれません。しかし、これらは経験豊富な開発者によって最も頻繁に言及されるものであり、それが私です。 。これらの実践やヒントが、クリーンなコードの作成に役立つことを願っています。さて、すべてのことと同様に、最も重要なことは始めることです。したがって、少なくとも 1 つのヒントを選択して試してみてください。

以上が優れたクリーンなコードを書くための 6 つのヒントの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。