避けるべきよくあるコーディングミス

避けるべきよくあるコーディングミス

人は誰でも間違いを犯す。

しかし、開発者が犯す間違いの多くは回避可能です。この記事で説明した一般的な間違いを避けることができれば、より優れた簡潔なコードを書くことができます。

[[313623]]

これは、あなただけでなく、あなたのコードをレビューする必要がある他の開発者にとっても有益です。したがって、よくある間違いを避けることは、あなただけでなく、チームにとっても有益です。

要約すると、Xiaoxin は避けるべき一連のよくある間違いをまとめました。

1. 変数の非説明的な命名

適切な変数名の重要性はいくら強調してもし過ぎることはありません。多くの場合、プロジェクトに取り組んでいる開発者はあなただけではなく、他の開発者もあなたが書いたコードを理解する必要があります。

適切な名前を選択するには時間がかかりますが、それによって多くの時間を節約できます。

2. マジックナンバーとマジックストリング

変数の非説明的な名前に関する前のセクションに続いて、次の項目に進んでください。次の項目では、変数に値を割り当てないこと (マジックナンバーまたはマジック文字列とも呼ばれます) について説明します。

Wikipedia の定義:

マジックナンバーは、説明されていない意味を持ち、複数回出現する一意の値であり、名前付き定数に置き換えることができます。

次のコード スニペットを検討してください。

  1. ($i = 1; $i <= 52; $i++)の場合{
  2.  
  3. ...
  4.  
  5. }

この例の数字 52 は魔法の数字です。 52 という数字がなぜ存在するのか、またそれが何を表しているのかは誰も理解していません。なぜ 52 なのですか? なぜ 64 ではないのですか? これらは 1 年間の合計週数ですか?

より明確な方法は次のとおりです。

  1. $cardDeckSize = 52; ( $i = 1;$i <= $cardDeckSize; $i++) {
  2.  
  3. ...
  4.  
  5. }

これで、誰もがこれがトランプのデッキを循環させていることを理解できるでしょう。コードは他の開発者にコンテキストを提供します。さらに、値は変数に一度だけ保存され、重複されないため、数値を変更するのが簡単になります。

マジックナンバーはプログラム内のさまざまな場所で複数回使用されることが多いため、エラーが発生しやすくなります。

文字列にも同じアプローチを使用できます。

  1. if (userPasswordIsValid($ユーザー "6yP4cZ" .$パスワード)) {
  2.  
  3. ...
  4.  
  5. }

6yP4cZとは何ですか?非常にランダムなようです。

  1. $salt = "6yP4cZ" ;if(userPasswordIsValid($ユーザー、$salt.$パスワード)) {
  2.  
  3. ...
  4.  
  5. }

ああ、分かりました!

3. コード形式が乱雑

コードの形式を難読化することは、通常、プログラミング経験があまりない人が犯す間違いです。長年の経験を持つ開発者に、コードのフォーマットを間違えたテスターやデータ サイエンティストを知っているかどうか尋ねると、おそらくうなずくでしょう。これは経験不足によるものです。Python のようなプログラミング言語を使用しない限り、こうした間違いの多くは回避できます。

フォーマットの問題を修正する最も一般的な方法は、リンターを使用することです。最新の統合開発システム (IDE) もこの問題を解決する可能性があります。プラグインをインストールする必要がある場合もあれば、直接インストールできる場合もあります。

4. 1つの機能で多くのことを行う

単一責任パターンによれば、関数は 1 つのことだけを実行する責任を負う必要があります。データの取得、処理、表示という 3 つの機能を組み合わせた関数を数多く見てきました。適切なプログラミングでは、この機能を個別のプロセスに分割し、1 つの機能でデータを取得し、1 つの機能でデータを処理し、もう 1 つの機能でデータを表示します。

関数がより堅牢になるため、1 つのことに集中することが重要です。たとえば、API (アプリケーション プログラミング インターフェイス) からデータを取得するなどです。 API が変更された場合 (たとえば、新しいバージョンがリリースされた場合)、同じ関数に属している処理コードが壊れるリスクが高まり、データの表示も壊れる可能性があります。

5. ハードコーディング

ハードコーディングとは、データを外部ソースから取得したり、実行時に生成したりするのではなく、プログラムやその他の実行可能オブジェクトのソース コードに直接データを埋め込むソフトウェア開発手法です。

ハードコードされた値は変更できません。固定値です。ハードコーディングはアンチパターン、または少なくとも悪いコードの兆候と見なされます。

何らかの理由(場合によっては正当な理由)でハードコードされることが多いのは、パスワードとファイルの場所です。

ハードコードされたパスワードが使用されるシナリオの多くは、外部サービスまたは API による認証のためです。これらの資格情報はハードコードされることが多く、これは良い方法ではありません。

多くのものをハードコーディングしていることに気付いた場合は、書いたコードをよく確認する必要があります。ほとんどの場合、これは問題を解決する良い方法ではないからです。

6. コードをコメントアウトする

複数の関数をカバーするコード ブロックがコメント アウトされているのを見たことがあるでしょう。なぜそれがまだそこにあるのか誰も知りませんし、コードがもはや意味をなすのかどうかも誰も知りません。しかし、このコードを削除する人は誰もいません。これは開発者が実際に行うべきことです。誰もこのコードを削除しなかった理由は、他の誰かがそれを必要とするかもしれないと誰もが考えたからです。

コメントアウトされたコードを削除するだけです。コードが新しいリリースに含まれていなくても、誰かがそれを使用したい場合は、バージョン管理で引き続き利用できます。

しかし、これはあくまでも私の個人的な意見です。

<<:  AIを金融業界の傍観者と考えるのはやめよう

>>:  大規模な伝染病に直面した時、ロボットは何ができるでしょうか?

ブログ    

推薦する

IDC: 生成型 AI への支出は今後 5 年間で年間 73% 増加し、2027 年には 1,430 億ドルに達する

IDCによると、世界の企業は2023年に160億ドル(ITホーム注:現在は約1169.6億人民元)を...

AIoTは公共交通機関をよりスマートかつ安全にします

さまざまな公共交通機関を頻繁に利用する人にとって、安全性と質の高い体験は最も重要です。人工知能やモノ...

一流大学のAIが一流弁護士に勝つ:契約書のレビューを26秒で完了

最近、アメリカの一流弁護士たちが人工知能と競争したが、弁護士たちは負けたと報じられている。法律AIプ...

新しい機械学習システムがロボットに社会的なスキルを与える

ロボットは大学のキャンパスに食べ物を配達したり、ゴルフコースでホールインワンを達成したりすることがで...

今後5年間であなたの人生はどのように変わるでしょうか?人工知能は水力発電のようなさまざまな産業に参入する可能性がある

中国は最近、第14次5カ年計画の草案と2035年までの長期目標を発表し、各界から激しい議論を巻き起こ...

【文字列処理アルゴリズム】回文判定のアルゴリズム設計とCコード実装

1. 要件の説明文字列を入力し、その文字列が回文であるかどうかを判断するプログラムを作成します。便宜...

CAIOは企業が緊急に必要とする人材になりつつある

数え切れないほど多くの企業が AI 技術の研究や導入に競い合う中、多くの企業が熟練した AI チーム...

...

データ構造とアルゴリズム: 最小全域木、数秒で理解できます!

[[426679]]序文データ構造とアルゴリズムのグラフ理論において、最小全域木アルゴリズムは、比...

...

...

ネットワークにおける機械学習の実用的応用

各 Web アプリケーションには独自の機能とパフォーマンス パラメーターのセットがあり、これらは動的...

RNN (リカレント ニューラル ネットワーク) の背後にある数学の図解説明

導入最近では、機械学習、ディープラーニング、人工ニューラルネットワークに関する議論がますます増えてい...

ジェネレーションオートメーション:AI主導の労働力

生成 AI は AI の「津波」を引き起こし、AI 駆動型アプリケーションの急速な開発、広範な採用、...

「電力を大量に消費する」データセンターで AI はどのような役割を果たすのでしょうか?

我が国の「デュアルカーボン」目標の提唱により、データセンターにおける省エネと消費削減が社会的に注目さ...