プログラマーが持つべき良いプログラミング習慣とは?

この記事は「MOOC」から初公開されました IT雑貨やプログラマーサークルのホットニュースをもっと知りたい方は「MOOC」に注目!


優れたプログラミングの習慣を身に付けることは、キャリア全体に役立ちます。

たとえば、自分や他の人がコードを理解しやすいようにコメントを作成する、やりたいことをするのではなく、科学的な方法で変数に名前を付ける、すべてのプログラムが完了するまでテストをドラッグするのではなく、テストを標準化する、などです。

プログラミングは創造性に満ちた仕事ですが、細部が成功または失敗を左右する仕事でもあります.実際の作業時間の 80% を些細な問題の処理に費やすこともあります.

したがって、彼らの頻繁な出現をできるだけ避けることは、あなたのキャリアを楽にし、成功へと導きます。
1. 技術レベル
1. 主要なスキル (技術的詳細)

1) C ライクなプログラミング言語では、int と bool を相互に変換できることがわかっています。** したがって、a = 1 と a == 1 の両方が if の基準として使用できます。多くの初心者は "=" を "==" として扱いますが、これはエラーにはなりません。したがって、この種のエラーを見つけるのはより困難です。ちょっとしたコツは、判定条件を 1 == a と書くことで、間違って「=」と書いてしまうと、コンパイラの文法レベルでエラーになるので、すぐにエラーを発見できるようにすることです。 .

このテクニックはアイデアを引き付ける役割を果たしているだけです. プログラミング言語には多くの種類がありますが, ほとんどすべての言語には C ライクな言語でこれに似たテクニックがいくつかあります. この種のテクニックは, うまく使えば多くの時間を節約できる場合があります.

2) ビット操作を上手に使って業務効率を上げよう

計算量が多い場合、通常の演算の一部をビット演算で置き換えることを得意とすることで、コードの効率が向上することがよくあります。たとえば、* 2 は << 1 と書くことができます; 別の例として、奇数か偶数かを判断する場合、& 1 は % 2 よりもはるかに効率的です。
2. 中級スキル (コードの可読性)

1) スペースの利用

多くの初心者プログラマーは、小さなスペースでどれだけのことができるかを理解していません: a=b+c と a = b + c --- これはコンピューターにとっては 1 つのことですが、プログラマーにとってはそうではありません。まったく 2 つの異なることです。何千行ものコードを読む必要がある場合は、空白を使用するプログラマーに感謝しなければなりません。

2) 一貫したスタイルのコード

コード スタイルには、コード自体のスタイルとファイルの名前が含まれます。要するに、キーボードを介して手でコンピューターに書き込むものはすべて、ファイル名、変数名、関数名、インデントなどを含め、一貫したスタイルを維持する必要があります。経験豊富なプログラマーは、この点を深く理解している必要があります. 一貫したコード スタイルは、あなただけでなく、コードを読む人にも役立ちます.

簡単なシナリオを考えてみましょう. あなたの親戚や友人の中に 2 歳か 3 歳の子供がいます. 彼は「gu hu」という 2 つの単語を言いました. この 2 つの単語の具体的な意味を理解している限り, 彼の母親の翻訳の後. 、あなたは突然気づきます:ああ、それは「おじさん」であることが判明しました。これはスタイルの異なるコードと同じで、その意味を理解するのは難しく、コードを打った人の考えを解釈するのに多くの時間がかかります。

 3) ネーミングには意味がなければならない

この記事ではあまり説明する必要はありませんが、a = 1.2 と price = 1.2 のどちらがわかりやすいでしょうか。原則として、変数や関数の名前はあいまいな名前や意味のない名前よりも長くする方がよいでしょう。

4) メモの書き方を学ぶ

注釈をいつ使用するか、これは古い質問であり、特定の基準はありません。ことわざがあります: サウンド コードでは、コメント部分はコード自体の半分から 3 分の 2 でなければなりません。Xiaomuはこの声明に完全に同意していません.コメントは状況に依存する必要がありますが、これはコメントの重要性を示しています. 変数名と関数名が適切に命名されている限り、そのようなコメントをコメントする必要はないと決して信じないでください。

経験上、ロジックがより複雑でピットを踏みやすい場所では、コメントを書く必要があります。関数ごとに関数の戻り値やパラメータについてコメントを書く必要があるかどうかについては、詳細に分析する必要があります。プロジェクトで書く必要がある場合は、あまり質問する必要はありません。プロジェクトにそれほど難しい要件がない場合は、誰もがよく使用するより複雑な関数についてコメントを付けるのが最善です。このように、この機能を使用するすべての人は、コメントを通じてこの機能の使用方法をすぐに理解できます。

また、関数本体が空っぽの箇所では、コメント行を書くこともプラスの役割を果たします。例えば:

ボイド関数 () {}

ボイド関数 ()

{

// 何もしない

}

これら 2 つの書き方が多くのコードに現れる場合、2 番目の書き方が最初の書き方よりもはるかに優れていることは明らかです。

しかし同時に、コメントを書くことにも代償があることに注意する必要があります。コードを変更する場合、対応するコメントも変更する必要があり、実質的にワークロードが増加します。誤ってコメントを変更するのを忘れると、コードを読む人を混乱させる可能性があります。つまり、コメントも維持する必要があります。したがって、注釈を乱用しないように注意してください。
3. 高度なスキル (デバッグ)

1) [制御変数メソッドを使用してデバッグする

多くの初心者は、コードを書くこと自体にそれほど時間がかからず、実際に時間がかかるのはデバッグであるという事実に気付いていないことがよくあります。デバッグの速さは、その人のプログラミングレベルをそのまま反映していると言えます。デバッグ スキル、プログラマーによって経験は異なるかもしれませんが、実際にデバッグ スキルと呼べるスキルは、制御変数メソッド + 二分法という 2 つだけです。

いわゆる制御変数法とは、複数の不確定要素に直面したとき、それらの要素を人為的に修正して、不確定要素が1つだけ残るようにすることを意味します。このコードを見てください:

if (func() < func2() && value > getSize())

{

// …

// …

}

このコードを実行すると、if に入るべきではないのに入っていることがわかります。この時点で、問題を見つける必要があります。ここには 2 つの判定条件がありますが、どちらが間違っているのでしょうか。実際、制御変数の方法によれば、このようなデバッグは簡単に見つけることができます。条件を一時的に削除し、プログラムを実行させるだけで、エラーをすぐに見つけることができます。

上記の例は実際のケースです。その中でも func と func2 は非常に複雑な関数で、 getSize() は友人が書いたライブラリにパッケージ化された関数です。バグは、値が -1 で getSize() の戻り値が 4 の場合、if の部分が実際に実行されることです。実はバグの原因は、getSize の戻り値の型が unsigned int で、-1 が int 型なので、-1 > 4 が true になることです。このようなバグに直面して、ブレークポイントを追加して段階的に実行すると、バグを見つけるのに多くの時間がかかります。そして、まず func() < func2() を取り除き、次の判定条件だけを残せば、すぐにエラーを特定できます。

2) 二分法でデバッグする

コードに大量のバグがある場合、短時間でバグを見つけたい場合は、「二分法」を使用できます。例えば:

// a) ここに 1000 行のコード

// b) バグはおそらくこの位置にあると感じます

// c) ここに 2000 行のコード

このとき、a と c のコードを理解する必要はなく、b のコードを理解するだけで十分です。より正確には、b が a から得たものと b が c に与えたものを知る必要があるだけです。

b のコードが a のコードによって生成された 2 つの値に依存すると仮定すると、a のすべてのコードを直接コメントアウトし、b の 2 つの値をシミュレートしてから、実行して確認できます。結果。バグがまだ存在する場合は、a のコードに問題がないことを意味します - 少なくともバグの原因は a ではありません; バグが消えた場合は、バグが a のコードから発生したことを意味します。

例えば:

int 関数 ()

{

// 1000 行のコード

x を返します。

}

void func2 (int a)

{

// 2000 行のコード

}

int a = func()

// の値を変更します

func2(a)

このコードでエラーが報告された場合、バグを特定する最も速い方法は、最初に func2 へのパラメーターをシミュレートして、バグがまだ存在するかどうかを確認することです。バグがまだ存在する場合は、func2 に問題があることを意味します。そうでない場合は、これは、問題が前のコードにあることを意味します。初心者がこの方法を柔軟に使用してデバッグできるようになれば、彼らはすぐに「古いフリッター」の仲間入りをすることができると思います。

実は、デバッグはターゲットを見つけることと同じで、メソッドとメソッドに注意を払うことによってのみ、孤独になるという運命を回避できます。例えば:

彼女が理解していないプログラミング知識について話すな!

コンピューターを修理するために彼女の家に行かなければなりません。

女の子が怒っていると言ってあなたを無視するのを区別できるからといって、彼女が本当にあなたと話をしたくないというわけではありません!

……


2. 工作・勉強レベル
1. プログラミングの基礎知識を常に復習

 

物事の場合、最も基本的なものがコアになることがよくあります。プログラミングの基礎知識を常に復習し、プログラミングの思考体系を理解し、それが何であるかを知り、なぜそうなのかを知ることによってのみ、便利に使用できます。私は長い間間違いを見つけられず、ついに頭を叩きました。ああ、ここで間違いを犯したことがわかりました。

少し前にコードを書いたプログラミング初心者がいます. ロジックは次のとおりです: ハイパーリンクはバックグラウンドを要求しますが、リンクをクリックした後、ページは更新され、バックグラウンド要求は実行されません. 彼は長い間検索しましたが、問題は見つかりませんでした。最後に、より高い資格を持つ同僚に、彼の A ラベルが次のように表示されていることを確認してもらいます。

<a href="" onclick="getUserInfo();"/>. に変更されました

<a href="javascript:void(0)" onclick="getUserInfo();"/>. 同僚が頭を変えて去った後、彼は突然気づきました。

 

2.体系化されたリストと断片化

高校 3 年生の頃が、人生における知識の蓄積のピークだったと多くの人が言います。当時の最も重要なタスクは、関連する知識のポイントを毎日繰り返し学習して暗唱することだったからです。しかし、どんなに当時を鮮明に覚えていても、大学卒業後に過去を振り返り、新しいことを学ばなければ、時間が経つにつれて、多くのことが徐々に忘れられていきます。これが人間の記憶の忘却曲線です。

プログラミングに関しては、言語や技法が多すぎて、写真の記憶は期待できません。ノートを購入するか、さまざまなクラウド プログラムを使用して、独自のプログラミング言語のエントリを体系的にリストし、エントリの下に詳細なモジュールを細分化し、優れた視点、実践的なスキル、および仕事やレジャーの中での深い知識に触れ、分析原理を記録できます。断片的に。このように、普段からブラウジングするのは便利で、一定期間継続すれば、専門的なスキルが大幅に向上することがわかります。実はプログラミングに限らず、どの業界にもお金をかけずにトップに立つ天才はいません。プログラミング自体を学ぶには時間と経験の蓄積が必要ですが、勤勉さを基に、良い習慣と正しい方法論を守り、成功するかどうかはあえて言いませんが、間違いなく進歩します〜


「MOOC」アカウントへようこそ。IT サークルで高品質のコンテンツを提供し、乾いた知識を共有することを常に主張します。一緒に成長しましょう。
 

おすすめ

転載: blog.csdn.net/mukewangguanfang/article/details/130339414