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

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

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

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

[[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を金融業界の傍観者と考えるのはやめよう

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

ブログ    
ブログ    

推薦する

...

...

アルゴリズムのパフォーマンスを最適化するためにデータ品質を確保するための 6 つのヒント

今日、企業は、分析アルゴリズムの良し悪しは、そのアルゴリズムをトレーニングするデータの良し悪しによっ...

AIが人間の職業を「置き換える」ためのロードマップ

昨日、私はこのような図を見ました。AI がどのように人間に取って代わるかを示すレベル図です。写真写真...

AIと機械学習に切り替えるには、次の5つのスキルを習得する必要があります

1. 機械学習をスキルとして扱うソフトウェア エンジニアとして、私たちは常に学習し、進化するフレーム...

優れたオープンソース画像背景除去プログラム8選

画像背景除去プログラムは、画像内の被写体と背景を自動的に分割し、背景を除去することによって機能します...

ヒントンは独自に44ページの論文を発表した。「アイデアを出して、自分で試してみて」

「ニューラル ネットワークに人間のように画像を理解させたいのであれば、ニューラル ネットワークが部...

中国のAIチップ「覚醒」の5年

10 種類以上のチップが発売され、多くの合併や買収が行われています。これは、過去 500 日間の中国...

推奨システムにおける自然言語処理 (NLP) の応用

[[195357]]パーソナライズされた推奨はビッグデータ時代に欠かせない技術であり、電子商取引、情...

機械学習を学ぶには? Alibaba のプログラマーが、わずか 7 つのステップで Python 機械学習を習得できるようお手伝いします。

概要: 現在、インターネット上の Python 機械学習リソースは非常に複雑で、初心者にとっては混乱...

AI技術が世界の感染症対策に情報提供を支援

最近、SingularityNETのCEOであるベン・ゲルツェル博士は、COVID-19サミットを開...

...

多くの人がまだブロックチェーンについて漠然とした理解しか持っていない中、これらのブロックチェーンの応用シナリオはすでに実装されている。

1.ブロックチェーン + IP著作権最近、フェニックスオンライン書店は「フェニックスエッグ」と呼ば...

自動運転のジレンマと選択

ここ数年、自動運転車に対する熱狂が高まっています。これは確かに合理的です。自動運転車は、燃費の向上、...