効率的なコードに関する私の意見=> Li Qifeng

2年生の人生を終えるのにまだ1か月あります。以下は、初心者から始めて2年足らずで学び、働いた傲慢な新入生の年からの私の経験と洞察のほんの一部です。不備についてはコメント欄にメッセージを残してください

プロジェクトの構想と詳細設計

要件を満たした後、最初に一般的なロジックを整理し、次にプロジェクトの構造とプロセスを考えます。コードがよりスムーズになるように、アイデアの結果をアウトラインデザインと詳細デザインに入れるのが最善です。
プロトタイプが作成される前にコードマインドが攻撃を開始し、後でプロジェクトを促進および改善し続けることがよくあります。多くの場合、以前のいくつかのことを考慮していないことがわかりました。結果は、
詳細な設計の前に再構築されることがよくあります。含まれる内容:
1。プログラム設計の説明
2.プログラムの説明
3.機能とパフォーマンス
4.入力および出力項目
5.アルゴリズムとプロセスロジック
6.インターフェース
7.ストレージ割り当て
8.注釈設計
9.未解決の問題
10 、UMLクラス図

パッケージを上手に活用する

チームでは、プロジェクトはいくつかのモジュールに分割され、全員が自分のモジュールを完了して維持する責任があるだけです。したがって、コードを作成するときは、他の人が自分のコードを呼び出しているシナリオを考慮する必要があることがよくあります。プロジェクトを効率的かつ明確に完了する方法。つまり、各人が担当するモジュールは比較的独立していますが、相互に接続できます。このとき、梱包が必要です。関数が完了するたびに、関数としてカプセル化されます。関数は互いに独立しており、互いに呼び出します。
私は今、コードを書くことはビルディングブロックのようなものだと感じています。独立したモジュールは多くのコンクリートビルディングブロックで構成されており、複数のモジュールをコンクリートオブジェクトに組み込むことができます。多くの場合、ビルディングブロックのボックスは多くのオブジェクトに組み立てることができますが、組み立てられる構造は異なります。
コードの記述についても同じことが言えます。関数はコード行で構成され、特定の関数を完了することができます。複数の機能をつなぎ合わせることで、実際の生産用途で
パッケージを活用し、組み立てが良好になります。

プロジェクト能力、コーディング能力、学習能力

私にとって、資格のあるソフトウェアの専門家は、次の3つの能力を持っている必要があると思います

  1. プロジェクト能力:プロジェクトを理解する能力。製品では、需要を理解する能力と見なすこともできます。これは、プロジェクトを取得するときにプロジェクトの構成と要件を理解および分析し、プロジェクトの構造とプロセスを考案し、必要なテクノロジーと言語を選択し、一連の予備的なソリューションを考え出す能力に特に反映されます。能力のこの部分が私の40%を占めていると思います。今はせいぜい20%しかできません。プロジェクトを教えてください。プロジェクトの構成と要件を理解し、要件に応じて対応する関数を記述できます。
  2. コード能力:
    1つはコード記述のレベルを指します。効率的で、美しく、簡潔で、標準化されており、明確に階層化されており、非常に読みやすくなっています。
    2つ目は、要件を実装する機能、つまり、コードを介して特定の要件または機能を実装する方法を指します。上記の2つの能力が私の35%を占めていると思います。
    最初のポイントとして、私にできることは、完全なコメント、クラスのコメント、変数のコメント、および関数のコメントを書くことです。継承およびカプセル化コードをより頻繁に使用し、階層が明確であることを確認してください。効率に関しては、十分ではないと思います。コードを書き終えるたびに、戻って2回チェックし、最適化するものがあるかどうかを確認する必要がありますが、何かが足りないと感じています。最終的な分析では、それは言語自体といくつかの根本的なメカニズムの理解の欠如であり、この側面はまた、将来の強化の私の焦点でもあります。
    2点目は、在学中、先生や本からもらったコードを真似て、少しずつコードを書いていきました。仕事では、それはすべてあなた自身です。現在、私の本では、いくつかの簡単な要件を自分でしか実現できません。分散型、非同期型、およびコルーチンに依存する種類の機能については、まだ何もできません。
  3. 学習能力:実際の仕事では、常に新しいテクノロジーや新しいツールに触れることができます。ソフトウェアの専門家にとって、すばやく始める方法も不可欠な能力です。能力のこの部分が私の25%を占めていると思います。私は自分の評価で所有していますが、新しいテクノロジーの速度はそれほど遅くなく、将来の知識や経験の拡大の蓄積とともに始まりました。新しいテクノロジー
    は、3つのポイントを超えてより多くのことを学び、便利になると思います。会社は実際のプロジェクトで要約された経験にさらされています。学校で実を言うと、それでも快適すぎます。段階的な学習は、レベルが十分であると考えて、盲目で膨らみ、教師や本のニーズに簡単に対処できるようになります。その結果、多くの場合、企業に打撃を与えます。学校で勉強することは、バンガローを建てるようなものだと思います。レンガを積み上げることができれば十分です。企業の仕事は建物を建てるようなものであり、プロジェクトの規模に応じて難易度と複雑さが指数関数的に増加します。

文法の柔軟な使用

効率的で簡潔なコードの書き方:コードに付属の構文シュガー 使用する
例:Javaでのラムダの使用

//传统方式遍历列表
List features = Arrays.asList("Lambdas", "Default Method", 
"Stream API", "Date and Time API");
for (String feature : features) {
   System.out.println(feature);
}

//使用lambda遍历列表
List features = Arrays.asList("Lambdas", "Default Method", "Stream API",
 "Date and Time API");
features.forEach(n -> System.out.println(n));

ラムダの使用は、コードの簡潔さと読みやすさに役立つことがわかります。

注:特定の連絡先ラムダについては知りませんでした。上記の例のラムダは
、javaラムダで使用するのが最も簡単です。より詳細な説明はこのブログを参照できます。Java8ラムダの
使用法の詳細な理解は記事を参照できます:Java 8 10ラムダ式の例

例2:pythonでのリスト内包表記の使用

# 使用传统的遍历将列表中的单词全都变为小写
word_list = ['Word', 'List', 'Python', 'Liqifen']
low_list = []
for word in word_list:
    low_list.append(word.lower())

# 使用列表生成式将列表中的单词全都变为小写
word_list = ['Word', 'List', 'Python', 'Liqifen']
low_list = [word.lower() for word in word_list]

リストの生成は、より簡潔であるだけでなく、pythonに付属する構文により、より効率的です。

各言語には独自の特性と独自の文法があります。これらの文法をうまく利用すると、コードの効率が向上し、コード構造が簡素化されます。

デザインパターンの選択と使用

これは拡張コンテンツであり、後で仕事に習熟したときに追加します。シングルトンモデルは、これまでで最も公開されています。
しかし、コードの増加に伴い、適切なデザインパターンを選択することが非常に重要であることは明らかであり、それがどこで重要であるかを正確に言うことはできません。結局のところ、タオイズムは浅すぎます...

小さな要約

新入生から現在まで、Andrews、jsp、JavaScript、Redis、MongoDB 、MySQL、Hadoop、Spark、ELKBフレームワークの断片を学習しています...そして覚え
ていない人もいますが、学習と使用には3つしかありませんでした1つは、Java、Python、Linuxで、Sparkプロジェクトを開発したかったので、Scalaを学び始めました。
言い方をすれば、プロジェクトや製品を作るとき、言語、ツール、データベースの選択は非常に重要だと思いますが、ツールやデータベースがオープンソースであるか、他の人が統合するか、自分でコードで記述した関数であるかは関係ありません。最終的には、コードを使用してそれらを全体に接続し、プロセスロジックの完全なセットを記述して、各コンポーネントがプロセスに従って特定の生産作業を完了できるようにする必要があります。
ですから、ツールや言語は仕事の中で最も重要なことではないと思います。最も重要なことは、プロジェクト能力、コーディング能力、学習能力です。

以上がこれまでにまとめた5つの経験ですが、あとでもっと実用的な問題を追加します。

おすすめ

転載: blog.csdn.net/mrliqifeng/article/details/80699348