プログラマーへの便利なNOTアドバイス

私はほとんど経験のないプログラマーですが、すでにキャリアのはしごで最初のti病な一歩を踏み出しています。 私は多くのことを読んで学び、時々練習で何かを試します。 そして今、私はあなたと私の日常の仕事で多くを助けるいくつかのプログラミングのヒントを共有する準備が整いました。 私は自分ですべてのヒントに行き、私のプロジェクトで何度もテストされています。



1)無限ループ



私たちは皆、「それ自体」の原理に従ってコンピューターで多くのことが起こりうることを知っています。 電力サージまたは磁気干渉が発生する場所があります。 したがって、プログラムでビットの反転が簡単に発生する可能性があります。 そして、真ではなく偽になります。 そしてこれは、フォームのサイクルが次のことを示唆しています。



while ( true ) { doSome(); }
      
      





完全に信頼できない! いつでもtrueがfalseに変わる可能性があり、ループを終了します。 これを避ける方法は? とても簡単です。 この「断片」のコードにより、無限ループの信頼性を簡単に高めることができます。



 while(true) { do { for(;;) { doSome(); } } while(1); }
      
      





多くの人がコードの数が増えたと言うかもしれません。 しかし、プリプロセッサが助けになります。



 #define FOREVER_CYCLE_START while(true){do{for(;;){ #define FOREVER_CYCLE_END }}while(1);}
      
      





そして今、私たちは簡単に書くことができます



 FOREVER_CYCLE_START foreverYoung(); FOREVER_CYCLE_END
      
      





素晴らしく、すべてがすぐに明らかになります。 そして、初心者は(;;){}の意味を考えないでしょう。 そして、なぜforの状態が泣き顔のように見えるのか。



2)ブレースを取り付ける



終わりのない議論。 どちらが良いですか?



 if ( COND ) { doSome(); }
      
      





または



 if ( COND ) { doSome(); }
      
      





十分だ! 私は皆に合うオプションを提示します!



 if ( COND ) { { doSome(); }}
      
      





誰もが幸せで満足しています。 あなたはホリバーを忘れることができます...しかし...最後の2つの閉じ中括弧を1行に書く価値がありますか、それとも2つに広げる価値がありますか? しかし、これは専門家の関与と追加の議論を必要とする別の問題です。



3)アセンブラーインサート



プログラムにアセンブラコードを埋め込むことを恐れないでください。 このような挿入は、高レベルのC ++だけでなく、機械語との対立を知っていることを示しています。 はい、場合によっては、プログラムを別のアーキテクチャに転送するためにアセンブラコードを書き換えたり修正したりする必要があります。 しかし、あなたはこの仕事のために余分に支払われます、そして、再びあなたの上司はあなたが良い従業員であると確信します。 そして、他の誰もあなたの責任に対処できません。 まだちょっとしたトリックがあります。 何もしない無駄なアセンブラー挿入を挿入できます。 たとえば、レジ​​スタ内の情報を交換するさまざまな方法を思い出すことができます。



 mov bx, ax mov ax, cx mov cx, bx xchg ax, cx push ax mov ax, cx pop cx xor ax, cx xor cx, ax xor ax, cx
      
      





このコードはプログラムに重要性を与えます。 そして、彼と一緒に働く人々は彼らの知識をリフレッシュします。 大学から来たばかりの経験の浅いプログラマーがあなたと一緒に働くことができます。 そして、学生はアセンブラーを学ぶ気があまりないことを知っています。 したがって、彼はすぐに説明のためにあなたに走ります。 プログラミング言語を簡単に操作できるので、彼はあなたが第一人者であるという印象を持ちます。 そして、上司は、新しい従業員が新しい知識を求めてあなたに駆けつけ、あなたがそれを喜んで共有しているのを見て喜んでいるでしょう。 給与に影響を与える可能性のあるもの。 それでも、彼らはアセンブラーでそれを知っています-より速く!



4)constを使用しない



プログラマーは、私たちがすべてが非常に急速に変化する活気に満ちた急速に発展している世界に住んでいることを誰よりも知っています。 したがって、constを使用しても意味がありません。 たとえば、地球の衛星の数(月が1つしかない)など、オブジェクトが明らかにconstである場合でも、何らかの理由で月が2つに分割される可能性があります。 そして、あなたはする必要があります:



 const int moons = 1; moons++;
      
      





残念ながら、コンパイラは拒否します。 さらに、誤ってconstを必要としないものにすることができます。 誰かがあなたの給料を一定にした場合、どうしますか? それだけです! さようならキャリアの成長と給与の増加。



 const salary = 100; // $  
      
      





また、それはコードのバイトの余分な無駄です。 これらの5文字については、何か役に立つことができます。 たとえば、foo ++。



5)変数にできるだけ短い名前を付ける



結局のところ、変数xの記憶は、position_of_object_on_x_axisよりもはるかに簡単です。 たとえば、このコードは簡潔で読みやすいように見えます。



 if ( x < y ) { z++; } else if ( c > q ) { c += f; } else { r = z + c; }
      
      





コードは目に簡単にフィットします。 そして、一目見れば簡単に分析できます。



6)キャメルケースまたはsnake_case



別の永遠のホリバー。 ハンガリー記法が有用であるか、過去の遺物であるかと同じです! 十分。 プログラマーはコードを書くべきであり、誰が正しいのか、誰が正しくないのかを理解する必要はありません。



私はこれらのスタイルを分析し、例外なくすべての人に適したユニバーサルスタイルを開発しました。

vengro_snakeCamel



このスタイルの例:

 float float_charPositionX; int int_moneySpent char* charPointer_nameOfPerson;
      
      





7)変数名



プログラマーは、後でコードを読むのが便利になるように、コードを記述する必要があることを知っています。 しかし、私たちは誰が私たちの後にそれを読むかを常に知っているわけではありません。 そして、この人が英語を知っているといいです。 しかし、誰もが彼を知っているわけではなく、この聴衆を考慮に入れなければなりません。 ロシア語で理解できるように変数を宣言します。



 int int_kolichestvoBukv; float float_glubinaBasseina; bool bool_estLiZhiznNaMarse;
      
      





これで、子供でもあなたの変数の意味を理解できます。 しかし、まだ。 完璧に制限はありません。 まだ子供の頃にコンピューターゲームをプレイしましたか? チームメイトとのコミュニケーション方法を覚えていましたが、ロシア語はサポートされていませんでしたか? この知識をプログラミングに使用してください。 結局のところ、誰もがすべてを理解していたので、理にかなっています。



 int int_koJIu4ecTBo6ykB; float float_rJly6uHa6acceuHA; bool bool_ectbJIu7Ku3HbHaMapce;
      
      





8)定義



プリプロセッサは非常に長い間存在し、C言語から継承されており、継承されたため、プログラミングの不可欠な部分として、タイムテストされ、C ++に転送された値を表します。 典型的な状況を考えてみましょう。 大学の最初の年に、パスカルを学びました。 そして2日、彼らはあなたにC ++を教え始めました。 新しい構文は混乱を招く可能性があります。 しかし、それは問題ではありません。 C ++プリプロセッサが急いで助けます。



あなたはいつでも書くことができます:



 #define BEGIN { #define END }
      
      





それだけです。 新しい言語への移行のプロセスは、痛みが軽減され、理解しやすくなります。



9)グローバル変数



グローバル変数を自由に使用してください。 結局のところ、それは非常に便利です。 まず、初期化について心配する必要はありません。 これらはゼロに初期化する必要があります。 プログラムのどの部分からでも簡単にアクセスできるため、関数内の不要なパラメーターを回避できます。 プロジェクトの柔軟性が向上します。 そして、誰かがそれがスレッドセーフではないと言う場合。 そうです。 そして、それはあなたがスレッドを使うのを止めます。 人間の脳は、シングルスレッドプログラムの計算に優れています。 また、グローバル変数を使用すると、スレッドを使用する必要がなくなり、プログラムの信頼性が向上するだけです。



10)ソース



プログラムのすべてのソースコードは1つのファイルに保存するのが最適です。 これにより、興味のある変数や関数を簡単に見つけることができます。 実際、単純なテキスト検索は同時にプロジェクト全体の検索になります。 すべての機能はあなたの目の前にあり、すべての変数はいくつかのスクロール移動で利用可能です。 コードを複数のファイルに分割すると、ファイルが失われないように監視したり、各コンパイルモジュールからのグローバル変数の呼び出しを解決したりする必要があります。これらの問題はすべてなぜですか? 近くですべてがコンパクトになっている場合、さまざまなファイルをダウンロードするよりもソースコードを理解する方がはるかに簡単です。



エピローグ



私の仕事の過程で、何らかの理由で、自分のコードとコーディングスタイルを批判されることがよくあります。 彼らは理由を説明しませんが。 彼らはしばしば誓い、笑います。 したがって、より経験豊富なプログラマへのリクエスト-あなたの若い同僚を怒らせないでください。 私たちはすべて初心者であり、経験不足、疑念、不確実性を経験しました。 優しくしてください。 そして、私のアドバイスが役に立たないことを願っています。



All Articles