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

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

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

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

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

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

ブログ    

推薦する

人間と機械のコラボレーションが顧客に力を与え、インテリジェントな顧客サービスが企業のマーケティング環境を一変させています。

「ロボットはアフターサービスにしか適していません。」 「ロボットはどのようにして人手によるマーケテ...

...

世界の AI 人材レポートが発表されました: 清華大学が 3 位、北京大学が 6 位にランクイン!シリコンバレーが40万人を解雇、プログラマーの面接は12回

先ほど、グローバル AI 人材レポートが発表されました。世界のトップクラスの AI 人材のうち、約半...

もし人工知能が人類をリードし、他の惑星で発展したら、その人工知能は人類を支配することになるのでしょうか?

科学者たちは長期にわたる調査により、人類文明の進歩が指数関数的な上昇傾向を示していることを発見した。...

...

ナノロボットは将来さまざまな場面で使用される可能性がある

最近、米国ペンシルベニア州立大学の科学者たちが新しいタイプのナノロボットを開発しました。このロボット...

データ詐欺師はどこにでもいる。いわゆる「万能薬」を暴く方法

この記事は公開アカウント「Reading Core Technique」(ID: AI_Discov...

沈興陽博士:30年間の科学研究で私が遭遇した落とし穴

先日開催されたX-Talkでは、米国工学アカデミーの外国人会員であり、XiaoIce会長でもあるハリ...

量子もつれによりホログラムが生成されます。物体は画像を形成するために光を放射する必要はありません。

新たな研究によると、量子力学は科学者が物体から光を捉えることなくホログラムを生成するのに役立つ可能性...

おとぎ話を使ってAIモデルを訓練することで、マイクロソフトは生成モデルのパラメータを探索するための新たな入り口を発見した。

大規模言語モデルのパラメータサイズは拡大しているものの、モデル内のパラメータがどのように機能するかを...

日本音楽著作者団体連合会は、政府に対し、AI規制に関する議論を直ちに組織し、クリエイターの参加を求めるよう求める声明を発表した。

日本音楽著作者協会連合会(FCA)は6月15日、AIによる著作権の活用についての見解を公式サイトで発...

GPTは「贅沢」すぎるが、代替案が多数用意されており、展開の問題を心配する必要はもうない

近年、生成的事前トレーニング済みモデル (GPT など) の台頭により、自然言語処理の分野に革命が起...

モザイクから高精細画像まで、AIの画像作成能力は強化されてきましたが、美しさと歪みのバランスをどう実現するのでしょうか。

サスペンスやSF作品では、ぼやけた写真がコンピューターの画面に表示され、捜査官が画像を強調するように...

はい、純粋なSQLクエリステートメントでニューラルネットワークを実装できます。

[[229220]]よく知られているように、SQL は、開発者が大量のデータに対して効率的な操作を...

初心者向けガイド: Numpy、Keras、PyTorch を使用した単純な線形回帰

[[433966]]図 1 に示すように、さまざまな種類の機械学習技術は、さまざまなカテゴリに分類で...