2020年には、私のようなコードを書きたいです

9102年初頭に、ルームメイトは私の書き込みコードする能力を向上させることができますどのように質問を尋ねましたか?

残念ながら:それだけでは、そのようなオープンソースを見てて、彼のアイデアのいくつかに多くの本を返信、より多くの学習、業界の動向や慣行にもっと注意するだけでなく、原則の数を上場しました。しかし、これらはまとめていなかった、またはがあることが、言語のない例は常に曖昧ではありません。だから、機会に、今年の終わりに、今年中に発生した問題の種類に対応したコードは、1つずつ説明します。

良いのコードの有用性

この本は、実際にはかなり信頼性のない前提に構築されています:良いコードが有意義です。私は私の意見では、「良いコードの品質」の商業的成功または広範囲に使用するソフトウェアが必要でも十分でもない、たくさんのお金を稼ぐ彼らの所有者にあまりにも醜いコードを見てきました。たとえそうだとしても、私はまだ信じて、コードの品質にもかかわらず、より良い未来を保証するものではありません、彼はまだ彼の感覚を持っている:ビジネスニーズの後のコードの品質の良いソフトウェアの開発と配信で、ユーザーがタイムリーに機会に対応するために方向を調整することができます確信しますそして、の競争、開発チームは前に高い士気とフラストレーションを維持するために再び挑戦することができます。質の悪い、重いエラーコードに比べてすべてのすべては、良いコードを使用すると、ビジネスの成功を達成するのを助ける可能性が高いです。

「モードを実現」するために上記のテキストの抜粋はじめに、本から10年ぶりに翻訳されているが、本はまだ大きな価値を持っています。発言のためにいる間、私はそのホールド見解を否定しません。しかし、私は(私は確信している、ああ、間違っていない)以上の金融コストの良いコードよりも悪いコード、と思います。同じビジネスニーズのために、不正なコードは、より多くの時間を労力が必要ですが、出力が少なくなります。同時に、割れ窓理論(環境に負の現象は、自由放任主義が存在する場合、従う人々を誘導し、さらに激化することを理論)、悪化したコードが生成されます不正なコードに応じて。制御されない、時間の要件は、ゆっくりとコントロールを失うことになる完成場合、これは、悪循環です。需要が行われる必要があると誰が休暇を失うことになります。

言い換えれば、良いコードは、ユーザーがクールなボスをできるように、冷却させ、ウィンウィンを達成することができ、開発者は冷却することができます。要するに、誰もが本当にクールクールです。

どのように良いコードは書くこと

少しでも超えます

設計やコードを使用して、オープンサービスラインからの圧力を逃がしまでの時間。

安全で信頼性の高いアプリケーションを作成するための最良の方法。何を書くありません。どこにも展開していません。

上記は、火災で最もgithubのプロジェクトNOCODEの1から取られています。怠惰は、プログラマの美徳の一つです。だから、ビジネスを理解し、ビジネスを学ぶ必修宿題不要な需要を拒否することもプログラマです。詳細については、単語のニーズを排除する方法を参照してください?これは、ブログは、もちろん、ほとんどのシナリオでは、我々はノーと言うと、電力の需要能力を持っていないが、いずれにしても、ビジネスの理解の深さは、顧客がより多くのプログラマのための共感を求めています。この問題を解決するためにプログラマが実行する必要があります。問題を解決するために問題の意味を理解しやすくなり。

ソフトウェア開発のために、時間が最も貴重な、最も貴重な資源である必要があります。したがって、可能な限り時間が既に同じ古い調子に存在していることを問題に新たな問題ではなく、厳密解の解決に費やしました。だから、自分自身のコードを記述しないようにしようが、他の設計と実装を借ります。実際には、ほとんど設計されていないと非常に短い時間の圧力の下でオープンソースのコードよりも適切に完了することができます。

(もちろん、特定のオープンソースの作者は、あなたのニーズがより具体的であればそうなデザインから、それは、より多くのユニバーサルデザインを採用し、より多くの人に自分の製品を望んでいた、あなたは「自由のための仕事」あなたはあなたを助けるために著者を説得することはできませんだと思います著者または拒否)、その後、あなただけの特定の場所にパッケージして書き換える必要がありますが、あまりにも多くの完全な書き直しよりもはるかに簡単。

もちろん、プロジェクトの研究や新技術ソリューションを使用することができることですが、非常に大規模なプロジェクトを追加するための小さな機能のありません。

彼らはデジタル丸めを使用することはできませんので、私は他の小さなパートナーの前に遭遇していました。彼は、この方法の問題を修正しましたが、math.jsジュニアパートナーを使用しました。

(11.545).toFixed(2)
// "11.54"

あなたが問題になっている理由の固定方法をお知りになりたい場合は、なぜ(2.55).toFixed(1)を参照することができますは、2.5に等しいですか?このような問題がある理由を説明するだけでなく、改訂されたプログラムの固定部分を提供するために、著者のV8ソース。

精度には大きな需要が存在しない場合は実際には、フロントエンド機能を使用し、完全に問題が解決され、すべての複雑な数学ライブラリなどの精度なし。

関数ラウンド(数、精度){ 
    リターン恐らくMath.round(+番号+ 'E' +精度)/ Math.pow(10、精度)。
}

もちろん、小さなパートナーは私のデータの最適化の多くを求めるために、テーブルに来てもありますが、私の最初の反応は無限またはVUE無限スクロールなどのソリューションを反応させるのでした。しかし、コンテキストを含むより多くの情報を提供するために、他の当事者、技術スタックの使用、データサイズの電流量は、将来の大きさは、あなたがそうで現在のテーブルを変更する必要があるかどうか、到達する必要があるかもしれません。ライブラリーの増加、次のようにするかどうかをより便利かつ迅速な方法に比べて、ビジネスの観点と組み合わせて、この情報を、取得します。

//ためVUEモデル、優れた使用Object.freezeパフォーマンスゲインのものとすることができる
this.xxx = Object.freeze(XXX)。

事業の蓄積と、コードの成長。コスト管理の複雑化は、依存を減らします。オープンソースの使用は、タスクが容易になります。時間がコストです。キーは、利益を最大化できるようにすることです。

以下を行うには、こちらをご覧ください。

団結

異なる人々が異なる符号化を経験し、実装コードの機能と環境設定プロジェクトをコーディングは異なる可能性があるため。拘束されていない場合でも、誰もが自分の好みに応じて、独自のモジュールを書いてみましょう、私はそれが災害に変わります怖いです。

私はいつもどのように著者の社会の理解とどのように理解するために、より多くのコード例を見てみたかった新しい技術を習得するたびだから。コードスタイルを実現するためには、あまりにも多くのコミュニティから逸脱しないので、コミュニケーションとコラボレーションの効率を向上させることができます。「アリ・ババのJava開発マニュアル」VUEスタイルガイドや、この大企業やコミュニティからの経験の声と同様に、数回読み取られます。彼らが問題とビジネスがより複雑に遭遇するので。

内部開発会社に、中央に位置するファンクションポイントをコーディングする方法、ファイルまたは底部に上記のコードの場合、ライフサイクルのコンポーネントを書き込みます。ユニバーサルは、コードを変更します。コードの行の数を制限します。統一された方式で、ドリーとあまり害を一覧表示することができ。

簡素化(抽象)

要約は、特定の物事から引き出されたような属性との関係の性質として彼らの共通点を、要約、および個々の、非本質的な側面、属性と関係が思考プロセスを放棄指します。

あなたが大規模なシステムに直面している場合は、その再構成が根本的な問題が解決されないでしょう、それが唯一のコードとコードの行数はほとんどの複雑さを軽減することができ、唯一の抽象は、実質的な問題を解決することができます。

それは、データベースの設計、建築、デザイン、ビジネス設計、コード設計、何も抽象的デザインであるかどうかは不可分です。強力な能力抽象的に弱いが直面する困難は容量よりもはるかに少なくなります。

あるいは、いくつかの抽象弱いジュニアパートナーにもいくつかの問題は、その後の打倒を再設計する必要が発生した、これは時間であり、事業の発展は受け入れられません。

axiosライブラリはインターセプタ、彼らのビジネスを持って、私はいつも彼が3段階に分けて処理したと思った、前のソースコードを見ていないとして、ここではコードの話に、以下は、また例です。

  • リクエストインターセプタ

  • 業務プロセス

  • インターセプトに応答して、

あなたがソースコードを見ればしかし、あなたは実際には、著者の意見では、これら三つの段階が実際にのみ約束キューを扱っていることがわかります。

//业务处理
VAR鎖= [dispatchRequest、不定]。
VaRの約束= Promise.resolve(設定)。

this.interceptors.request.forEach(関数unshiftRequestInterceptors(インターセプター){
    //前置请求拦截
    chain.unshift(interceptor.rejected、interceptor.fulfilled);
  });
this.interceptors.response.forEach(関数pushResponseInterceptors(インターセプター){
    //后置响应拦截
    chain.push(interceptor.rejected、interceptor.fulfilled);
  });

  一方、(chain.length){
    約束= promise.then(chain.shift()、chain.shift())。
  }

  約束を返します。

これは、コードの抽象化の一種です。だから私のコードは、プログラマが考える必要があるより多くのシーンに対応することができます。マシンコードは、見ていないのポスターで、より高い要件は次のとおりです。コードはただのポスターではなく、また、人々が使用しています。我々は考慮に人や物、柔軟な構成の連携を取る必要があると考慮されなければなりません。DOMのための仮想フロントエンドを取ります。あなたはより多くのプラットフォームに適合することができます。

もちろん、抽象化は、設計の多くを学ぶために時間と経験が必要です。

注:!ない時期尚早抽象ビジネスコードではなく、さらに抽象ビジネスコード。問題、自分で行うには、仕事を探して与えていないいない多くのコードを記述します。ビジネスでと愚かなシンプルな、それを維持しようとします。あなたが変更になりにくい現在のビジネスを確認するために、ビジネスの専門家されていない限り。

権利と責任(スプリットとマージ)

責任と義務は、本質的に、より安定した、より平等に等しいです。近年では、マイクロサービスアーキテクチャ、ミドル、フロントエンドマイクロ理論別の後、本質的には、平等な権利と責任にされ、より多くのサービスの基盤、人的・物的資源の高出力でより多くのビジネスへの投資は、より安定した動作を確保するために一つのことはかなり正常です。しかし、ない大きな鍋(単一アプリケーション)の前に。

ビューのコードポイントからは、モジュールは、物事を想定するかどうか、それはやるべきではない、またはモジュールは単純すぎる、と複雑さを招いています。

もちろん、いくつかのものは、現時点では行うことができないという事実は、一点で、満足みんなの感触を作ることである脂肪、マイナス1ポイントがちょうど定義することは困難であり、薄いです。ダン・アブラモフ監督のように言います:

フラックスライブラリは、メガネのようなものです:あなたがそれらを必要とするとき、あなたが知っていますよ。

一つだけ

UNIX哲学私は今年あまりにも多くのことをしたいと、これはよく理解されていますが、(良いか行っているが、ではない)は何の関係もありません。

ビューのコードポイントでは、ないため、パフォーマンス上の理由で少しは、それを行うために一緒にいくつかのことを置きます。たとえば、すべての質問のためのループを解決する、あるいは、例えば、関数内のすべてのコードを書くこと:

作成した(){ 
  constの{A、B、C、D} = this.data
  // ... 3つのものがあります同時にA、B、C、Dので互いに対話する必要が
  
  //終了後のロジック
}

変換後:

作成(){ 
  DOA AXX CONST =()
  DOB()
  CONST = CXX DOC()
  論理完了後//
}

//三つの機能を単離し
DOA(){
   CONST {A、B、C} = this.data
  /を/ ... 3つの物事はa、b、c、dが同時にaで互いに相互作用する必要がある
  
  が完了した後、論理//
}
//他のコード

のみにsetData、第二の人格は確かに低くすることができますが、保守性が高くなり、三つのことを分割する必要がある、コードの後ろを変更したら、いくつかを取る必要がある最初の1と比較すると、私はDODを追加することができますむしろ、再び明確に再び慎重にコードを変更する最初のコードのロジックを終え回。

ネーミングとコメント

キャッシュの無効化と命名の事:コンピュータサイエンスの2つだけのハードなものがあります。

ネーミングと命名は確かに非常に困難なものである一方、キャッシュの無効化は、二つの問題、今年キャッシュの問題についての話がたくさんあります。一文では、あなたが言葉で意思の事を説明するために、何かを説明します。

だけでなく、現実の世界では、世界でもプログラムに言ってはいけません。例:人が入るようにクリック誘致するために、この名前として、叱ら、しかし、人々は助けることはできませんが、何度も何度もだまさたくなる見た後も、「!実際xxxのxxxに衝撃を与えた」と他のニュース。したがって、プロジェクトの前に名前を覚えてシンプルで簡単なを取るために、解放されませんでした。

しかし、内部手続きでは、我々は他の人のヒット曲を「カンニング」が、ポイントに実用的である必要はありませんが、他の仲間をカンニングしていない、例えば、私は単純な名前を書いたが、内部パッケージの結果ビジネスコードがたくさん。そして、私は誰もが名前で、コードの大きな塊の意図を説明することは困難であるので、これは、短い方のために書かれた理由の機能だと思います。したがって、自己説明することができ、書き込みコード、およびこのベストプラクティスコーディングする必要はいい名前です。

オープンソースのコードの場合、あなたは多くの場合、これらの文書は、ノートのシリーズの始まりになることがわかります、コメントは私たちに、このモジュールの意図と目的を教えてください。だから、あなたはコードを見てする必要はないことを開発することができます。

あなたは、コードは明らかにその意味を説明することはできませんのみによる事業展開については、単にコメントを書きます。条件の数では、あなたのコードを説明することはできません。

  • プロジェクト名

  • モジュール名

  • ファイル名(クラス名)

  • 関数名(メソッド名)

これはありませんので、あなたがコメントを書いていないということです。しかし、私はより多くのコメントが、データ構造の代わりに、コードのロジックに配置されるべきだと思います。反対とのより良い不器用な仕事よりスマートなデータ構造とコード。多くの場合、私はデータ構造を見ては、ビジネスを実行するのではなく、単にコードと実際の想像力を見ることができない方法を理解することです。

実際には、時間をかけて、コードに多くの変更をしたが、コメントがその後変更されていなかった、これは大きな問題があります。ノートより多くの詐欺的となっています。

そこにはまた、輸出のデフォルト有害な記事を提供しています。私は、モジュールに名前を付けることができ、エクスポートデフォルトのエクスポートは、(時間が経つにつれて、モジュールの意図が変更されます)、虚偽のコードのようなものだと思います。

SCENE

我々は考慮にシーンの問題を取らなければならないので、私たちはいつもあなたが変更することができると言う、万能の解決策を見てはいけない、可読性が最初のものである(頻繁に読み込み可能な、あなたが変更することができ、コードのパフォーマンスが悪いわけではありません)。それはいくつかの緊急の需要のパフォーマンスのシーンである場合でも、考慮する必要があります。

事業は、前面の決意に適しているホスト、としてより適している次のことを検討するために、各使用の前に、最も一般的に使用される治療法である場合。両次元での引数がある場合、それは役割、一つのイベントがあります。最初のパラメータの役割を決定し、イベントパラメータを判断するために行く、そしてその逆も必ずしも悪いなければなりません。前者はより多くの人々の考え方に沿ったものであるからです。それはより多くのマシンの実装プロセスに沿ったものであるため、以前のどの置くことと同じ次元では、より多くの、前面のパラメータを適切に使用する必要があります。

あなたが本当に使用または他のリターンである場合のように。ほとんどの場合、他のビジネスロジック専用、処理エラーリターンを使用。ほとんどの人々の論理的な思考を持つ行でこのコードため。

しかし、ここで私はまた、第五章「米国のコード」から例を引用するだろうと同じように、著者はElliotte Rusty Haroldが検証数字の期間を持つXMLバリデータを、設計されました:

パブリック静的ブールisXMLDigit(チャーC){ 
  IF(C> = 0x0030 && C <= 0x0039)がtrueを返します。
  IF(C> = 0x0660 && C <= 0x0669)がtrueを返します。
  IF(C> = 0x06F0 && C <= 0x06F9)がtrueを返します。
  // ...
  リターン偽
}

次のようにこの最適化した後です。

isXMLDigit(チャーC){ブールパブリック静的
  場合(C <0x0030)リターン偽。IF(C <= 0x0039)がtrueを返します。
  (C <0x0660)戻り場合はfalse; IF(C <= 0x0669)がtrueを返します。
  (C <0x06F0)戻り場合はfalse; IF(C <= 0x06F0)がtrueを返します。
  // ...
  リターン偽
}

グローバルな思考、良好なコミュニケーション

ソフトウェア開発の時代は、世界を征服する人間ではない、あなたは常に国境をタッチアップする必要があります。分離の前の時代の後端部には、フロントエンドは、データベースを最適化する方法を知らないかもしれない、バックエンド、ブラウザのレンダリングメカニズムをクリアすることはできませんが、他が何をしているかを理解することはできません。それ以外の場合は同等、それは時間の無駄になり、同じ言語を話します。開発時間では、最後には、セキュリティおよび簡素化のロジックに依存していることを考える中で、いくつかのロジックを置きます。

良好なコミュニケーションは、他の人と通信するときに、あなたのリーダーは彼女があなたの難しさを知っているように、通信するように、十分なコンテキストを与える能力です。そして、小さなパートナーが進行するためにはリスニングで、良いを伝えると同時に、あなたが望むように進めるために他人を説得します。

アルゴリズム

あなたが他の人のOと対戦するためにあなたのO(N ** 3)アルゴリズムを取る、私は人々(leetcode適度なトピックが激しいです)のアルゴリズムではないけど、これは何も言わないし(N * LOGN)アルゴリズムは、料金のお金です。そこで、我々は、彼らがライン上の特定の側面に関する作業に十分ではないことを知っています。

アクセシビリティ

活字体

早期のエクスポージャーと練習が、過去にAnyScriptあります。今年はまた、頻繁に使用を検討しました。私は、ツールの善を実現していませんでした。優れた開発ツールあなたはその少しのために以下のコードを記述することはできませんが、あなたにもっと自信があるようにコードを提供するための時間を与えること。

活字体の最大の利点は、コードを書く前に、あなたが最初に考えさせる最初の設計を行うことです。前にも言いました。反対とのより良い不器用な仕事よりスマートなデータ構造とコード。

活字はなく、コンパイルエラーは、ほとんどのランタイムになり、防御的プログラミング(まだ信頼検証)の使用を減らすことができますことができます。あなたは、コード、共同の優先順位を書くだけではありません。

開発では、あなたが進行中のデータ変換モジュールにも、データ構造の複雑さと接触し、そして、場合、あなたは常に発生します:私のデータを?最後に、私たちはそのステップで失われましたか?そしてコードは、右のあなたはまだ、まだ、怖い懐疑的であったとしても。年齢「私は十分に、徹底的に十分、でない書き込みのバグにしたいので、」私は、それに合格しました。

機能的な思考

jsが今年は、関数がファーストクラスの市民で聞いたが、完全に理解することができませんでしたされた、起源において機能的です。

不変のデータであるピュアな機能、データとコード私はこれらの3点はコードを構築する能力に最大三点を考えるの関数であると考えています。

私は、いずれかの純粋な関数型言語を習得していないので、この展開について話をしたくありません。しかし、私は、機能コードの影を持っている必要があり、それは私のコードは、より美しくありませんでした。

他の

ユニットテスト、コードレビュー、セキュリティ、およびそのように記載されているしていないが、私はまた、出力されることに十分学ぶ必要があります。しかし、ここではそれらを学び、理解するためのいくつかの情報は以下のとおりです。

Googleのコードレビューガイド

SaaSベースのスタートアップのセキュリティ101

推論コードが良いです

仕事は互換性のために、我々はいくつかのあまり良くないコードを記述する必要があり、実際の開発ニーズテーブルに直面しながら、他の誰かが、一般的なものを残していること悪いコードです。しかし、他人の疑いの顔は、我々はそうするように、他の理由を与える必要が正当な理由と根拠を持たなければならない、つまり、あなたがコードのすべての行を書き留めます。

エピローグ

明らかではない平均シンプルにし、すべてのものの上に、しかし行うことを学び、経験するのに長い時間がかかることは明らかです。

それでは、どのようなコードを書くには?それは、業界の動向と実践へのオープンソース、より多くの書籍、より多くの学習、多くの注目を見ることです。コードを進化継続的な学習は、良いコードです。

それは私の名前jump_jumpと呼ばれる理由最近、(なしSUNYOUNGで)いくつかの小さなパートナーは尋ねました。私は自分自身を作り、私の小さな友人は引退し、より多くの心のエクササイズに維持したときに、マルチホップホップ座って見ていました。体に良いです。

おすすめ

転載: www.cnblogs.com/colorchild/p/12132327.html
おすすめ