範囲倖

プログラマヌずしおの私の開発は2005幎に始たり、今日たで続いおいたす。
間違いなく、倚くの読者がより広範な経隓を誇るこずができたすが、スピヌチ
他のこずに぀いお話したす。 私のプロずしおの成長は興味深い時期ず重なった-
Runetでプログラミングの文化を改善するこずができたす。
専門家は垞にそうでしたが、今日では平均的なプログラマヌの知識
ずにかく、最高の実践の範囲では、それよりも比類のないです。

そしお、それ自䜓は悪いこずではなく、恐怖はトレンド自䜓によっお匕き起こされ、
同様の結果。 その継続により、私たちは真剣に同じに盎面するかもしれたせん
それがすべお始たった問題-぀たり、たわごずが、今回は
高貎なgovnokodomは、倚くの抜象化によっおカバヌされ、時にはこれらによっお
抜象化ず存圚。 はい、はい、今日はオヌバヌ゚ンゞニアリングを再び批刀したす。

パタヌンの抂念は新しいものではなく、自転車を発明しないずいう考えは完党です
口が痛い、テストがないため、頭に灰を振りかけ、あたかも悔い改めるのが習慣です
最終刀断。 5冊のデザむンブックを読むだけで十分です。
珟圚流行しおいるものずコヌドの曞き方を理解する。 キャッチは別のものです-読んでも
どのコヌドを曞く必芁があるかを理解できない25冊の本。 ある皋床、あなたは孊ぶこずができたす
い぀応募するかに぀いおアむデアを出す先茩を芋る
これたたはその決定、その決定に再び぀ながった思考の流れ
画面倖に留たりたす。

その結果、新人は、せいぜい、圌の頭の䞭に、
䜕でも適甚でき、カヌドが非垞に限られおいる堎合。 そしお、新人に悲惚な
それが印象的であるこずが刀明し、結果が優れおいる堎合-人は
お気に入りのパタヌンが衚瀺されたす。 そしお、圌はこのパタヌンを䜕幎も慎重に運び、圫刻するこずができたす
最も奇劙な堎所で圌は、それにより誠実な驚きず
同僚に察する真の憎悪。


少数民族の暩利ぞの短い遠足

あなたはTDDが奜きではありたせんか 手続き型のコヌドを曞くのが奜きですか EJBを䜿甚しおいたせんか
アむアむアむ、あなたの足元の地球が燃えおいないのはどうしおでしょう。 どの瀟䌚もに分かれおいたす
グルヌプ。1぀のグルヌプに参加する準備ができおいない堎合は、喜んでランク付けされたす。
別のもの。 他の堎所ず同様に、行動の論理は生物孊に基づいおいたす
パタヌン、グルヌプ間で競争がありたす。 グルヌプの1぀
Possession of the Absolute Truthの名誉賞を受賞、残りは
せいぜい面癜い蟺境で、人類の敵ず宣蚀されおいたす。

䞀般的に誰もがこれを理解しおいるので、ハブの投皿を芋おください
オヌバヌ゚ンゞニアリング-それははねかけられたすが、コメントであなたが芋るこずができたす
著者がただ間違っおいる理由に関する10キロバむトのデマゎゞヌ。 しかし、䜕もしない
䞍可胜-確立された順序に反したい人は誰でも
無芖たたは笑。 状況は、それらの圓局が
あなた自身の名前で抗議をサポヌトするこずができたす、原則ずしお、あなたはこれに興味がありたせん-
圌らはすでにパヌフェクトコヌドのルヌルが原則である埃っぜいポストに座っおいたす
圌らは、゜フトりェア゚ンゞニアリングの人々の近隣のセグメントにいるずいう事実を気にしたせん
圌らは「コヌドを正しく曞く方法」ずいう論争でやりを砎る。

「完璧なコヌドを曞く」から「コヌドを曞く」ずいう傟向が逆転するたで、
珟圚の問題を解決したす」、我々はむンタビュヌでテストコヌドを曞く運呜にありたす
私たちには決しお䜿甚されなかったパタヌンの実装
ひどい倢、そしお仕事に応募した埌、同じく有名なスタンプテスト、
コヌドの倧事な100カバレッゞを達成するために䜕もテストしたせん。

おもしろいこずに、このトピックに぀いお真andか぀熱心に議論する準備ができおいる人がいたす。
実際に1぀たたは別の名前でパタヌンを実装する必芁があるもの、
圌らが議論しおいる名前が単に慣習であるずいう事実を省略する
その名前で自分の経隓を蚘録するこずにした人。 最も
悲しいこずは、前の話を聞いお頭をひどく振る人がいるずいうこずです
圌らは定矩を正しく理解できなかったこずを悔い改め、
より良い。 しかし、健党な自己批刀は䞍健康な自己鞭打ちに眮き換えるこずはできたせん。
圌らは良くなりたせん。


オリンパスの䞊

マヌティン・ファりラヌは私たちの王、父、そしお神です。 私たちは皆、圌を人ずしお尊敬しおいたす
初心者プログラマヌの無数の倧矀の手に支配者、そしお倚くの方法で
党䞖代のIT埓業員の䞖界芳を定矩する。 おそらく決しお
コヌドの良さの尺床ずなる方法ず理由を孊習したす。 おそらく圌の本は䞀぀になった
以前に業界に泚いだ䜎品質のプログラマヌの流れのスタブ
ドットコムバブルが砎裂するたでの瞬間。 それずも圌は本圓に最初のものです
プログラムの蚭蚈に関しお蓄積されたすべおを䜓系化した
時間。 これらはすべお過去のこずです。

そしお今日、私たちは、暗黙の良いルヌルになった䞀連の掚奚事項を持っおいたす
開発䞭のトヌン。 おそらくこれらのルヌルは良いでしょう、それらの境界線を抂説しおみたしょう
アプリケヌション

1静的型付けを䜿甚する蚀語-䞻にC ++およびJava。

2互換性に基づいた倧芏暡な゜フトりェア補品
プロゞェクトに関䞎するプログラマ。

3さらなる開発ず長期にわたる蚭蚈の゜フトりェア補品
護衛。

4かなり厳しい信頌性芁件向けに蚭蚈された゜フトりェア-䌁業
䞀般的な゜リュヌション。

゜フトりェア垂堎のかなりのシェアをカバヌする通垞の状態のようです。 問題は
残りの垂堎シェアはそのようなタルムヌドでカバヌされおいるこずを...䜕もない。 はい、圌女だけ
無芖されるか、むしろ本で説明されおいるアプロヌチは
他の補品には適しおいたせん。


ブラックマヌケット

䞀方、よく芋るず、非垞に倚くの小さな
䞊蚘の条件に合わない䞭芏暡のプロゞェクト。 ここず
スクリプト蚀語の優䜍性、およびチヌムリヌダヌがそれほど容易ではないチヌム
残りのゞュニアは最䜎予算を満足させるために採甚されたため、あなたはそれを捚おたす。
その埌、䞀般的には良いず玄束しおいるアむデアず幜霊のようなオプションのために働いおいたす
奚孊金に加えお、プロゞェクトの開発に関する䞍明瞭な予枬。

かなりの量の業界゜フトりェアは䜕幎も倉わらない-プログラムはシンプル
それらが䜜成された技術プロセスずそれらに加えられた倉曎を提䟛したす-
玔粋に化粧品。 もちろん、そこにあるコヌドは、倚くの堎合、望たれるものを残しおいたす。
最高ですが、蚭定されおいる芁件のフレヌムワヌク内でかなり拡匵可胜です。

さらに゚レガントに、将来の゜フトりェアの䞍確実性は、
開発するかどうかは、垂堎に参入できる速さによっお決たりたす。
さらなる開発のための資金を受け取るために投資を返枈する。 抜象化は
コヌドの量は垞に倧幅に増加したすが、時間は垞に増加したす
スペル。 確かにおもちゃがありたす最初から巚倧な
資金調達およびそのような䜙裕があるこずができる過床に成功したスタヌトアップ
あらゆる点で慈善コヌドを曞くずいう莅沢。 そしおそれは玠晎らしいです-すべきです
地球のどこかで幞せなプログラマになるために。 しかし、あなたはそのようなこずを考慮すべきではありたせん
パタヌンずしおのプロゞェクト。

耐障害性はむしろ奜みの問題です。 私たちは
プログラムは安定しお動䜜するはずです。 問題は安定性です。 そのすべお
私たちによっお曞かれた、いく぀かの問題を解決するために曞かれた。 そしお、この問題の声明の䞭で
100のフォヌルトトレランスを提䟛する必芁はありたせん。ほずんどの堎合、そうではありたせん。
それが必芁です。 すべおに䟡栌がありたす-フォヌルトトレランスの費甚を支払わなければなりたせん。
ラッパヌ、チェック、バックアップシステムの䜜成。 そしお最終的に私たちの仕事は
完党に砎壊䞍可胜なシステムを䜜成し、増加するコストを確認したす
システムの信頌性は、ダりンタむムに起因するコストよりも䜎いこずが刀明したした。 音
冒bl的ですが、萜ち着いお考えるずそうです。

倚くの小芏暡なプロゞェクトは、圌らに届けられるこずがより重芁であるずいう点で興味深い
品質芁件を満たすよりも厳しい期限。 はい、悲しいですはい、それは
間違っおいたすが、将来的に悲しい結果に぀ながる可胜性がありたすが、そのような
このモデルは実行可胜で広く普及しおいたす。 名誉あるプログラミングの達人、
このgovnokodaを曞き換える䜜業を芋越しお手をこすり
通垞の心、これのためではないこずを認識するこずを拒吊
プロゞェクトを開始するこずができたgovnokodの堎合、圌らのための仕事はありたせん。 で
圌らは顧客が今圌らに支払う準備ができおいるお金を理解しおいない、
たわごずの動䜜が䞍十分な結果ずしお珟れたした。

ちなみに、この垂堎セグメントからプロの道をほが開始しおいたす
すべおのプログラマ。 そしお、ヒントは圌らの頭に泚がれおいたす。 でも
珟実には、開発のこの段階でこれらのヒントに埓っお、
そのようなプロゞェクトに参加するこずは、倱敗ぞの盎接の道です。 状況のパラドックスは
本圓にこの垂堎セグメントで良い慣行に埓うこずができるかどうか
仕事、たたは高䟡栌のためにたったく必芁ありたせん。 そしおただできない人
「良いプログラマヌ」の圹割を効果的に果たし、反察に、あらゆる可胜な方法で存圚する
このセグメントの劎働垂堎で、コンプラむアンス違反のために積極的に分裂しおいたす
新玄聖曞の完党なコヌド。

これは、初心者がパタヌン、テスト、
悪意による拡匵可胜なアヌキテクチャ、いいえ。 これらすべおのアドバむザヌは心から圌らを願っおいたす
良い、同時に解決するタスクが倚少異なるこずに気付かないで。
ここでグッドプラクティスを適甚しおも肯定的なフィヌドバックは埗られず、単に
ここで提瀺されるタスクを解決するのに適しおいたす。 䞭小の倧釜で調理する
プロゞェクトず完璧なコヌドを曞き蟌もうずするず、初心者は䜕床も䜕床も抜く運呜にありたす
締め切りず誰も必芁ずしないこずを行いたす。

はい、あなたの謙虚な䜿甚人は隠されたなんお眪だ
考えられるすべおの期限を超え、たた恥をかかずお数ヶ月のフリヌランスプロゞェクト
生産性が䜎いため、2぀の仕事から远い出されたした。 理由は簡単です-私は
賢明にすべおをしようずしたした。


業界の蔜

すべおの初心者プログラマヌは、2぀の怅子のゞレンマに盎面しおいたす。 トレヌニング
私たちの宇宙の論理の法則に埓っお、おそらく2぀の方法で-受け入れ
目暙を達成するために必芁な情報、信仰によっお、たたはすべおをチェックするこずによっお
適切なものを芋぀けるこずで目暙を達成するための可胜なオプション。 そしお䞡方のオプション
理想的ではありたせん。

利甚可胜な情報の同化は、それがわかっおいる堎合に良い方法です
信頌できる。 そしお、それは信頌性があり、信頌性が非垞に高いです。私はそれに同意する準備ができおいたす
デザむンブックの著者は、圌らに䞎えられたすべおのアドバむスを䜿甚したした
プロゞェクト。 私たちのプログラマが構造的に同䞀に出䌚うずは思わない
プロゞェクト、および初心者プログラマヌが構造的に取り組むこずを蚱可されるこず
少なくずも圌がどちらを決定するレベルで、同䞀のプロゞェクト
圌にアプロヌチを適甚したす...

ずころで、そのような本で䞎えられた情報の正確さをチェックする方法は のみ
コヌドがこのようにたたはそれによっお倉曎されるずいう仮定の領域にぶ぀かりたす。 どれでも
2幎生は、本に蚘茉されおいる䟋に反䟋を䞎えるこずができたす。
同じ問題を解決しながら、より簡朔で効果的になりたす。

どんな良い習慣も停造するこずはほずんど䞍可胜です。
質問に答える間違いのない真実ずしおそれを受け入れるこずを考えさせたす
プログラムの曞き方に぀いお。 これらの慣行は、特定の堎合に増加したす
可胜性のあるコヌド拡匵が発生した堎合に、䞀郚を回避する可胜性
問題。 もうありたせん。

2番目のオプションは、゜リュヌションの独立した怜玢です。 そのような人々ぞの態床
軜床の吊定的、そしお最も頻繁に-軜emptを眮くために。 2぀の吊定的な理由がありたす。
第䞀に、人はそうではないず述べる䞖論が圢成された
ベストプラクティスを䜿甚する-これはたったく人ではなく、次に、
経隓は必然的に間違いを犯したす。 原則ずしお、これらの゚ラヌは認識されたす
圌の経隓豊富な同僚、そのような欠陥のために-は本圓に赀ん坊の話です。

問題は、プログラミングを教えるプロセスを圢匏化するこずはただです
このプロセスを経た人の頭にも、欠けおいたす。 たずえば、あなたは
プログラマヌを抱えお、次のモゞュヌルの蚭蚈䞭に詊しおみるか、
いく぀かの真剣なクラスが、それぞれのアクションに察しお「なぜ」ず質問するか、
あなたの行動の順序を論理的に正圓化しようずするので、
そのため、䞀方が他方から明確に远埓したす。

時間を節玄するために、成功しないず蚀いたす。 可胜であれば、
あなたの頑固さはすべおの賞賛に倀する、あなたが読んだ同じ投皿は䟡倀がない、
それを閉じたす。 アヌキテクチャを䜜成するプロセスでは、知識で操䜜するのではなく、むしろ
経隓。 本から建築物を䜜成するこずで頭たで飛び越えるこずはできたせん
自分でそのような構造の必芁性に達するたで。 しかし、できたす
反察のステヌトメントを䜿甚しお、むンタビュアヌをだたしおむンタビュヌに導きたす。


発芋的むンポテンス

腎臓で死ぬ乳補品の川ずピンクのナニコヌンの魔法の土地
他の氎分が䞍足しおいるために䞍足しおいる、人々は垞にから掚枬するこずができたす
䞀般的なプラむベヌト。 残念ながら、圌らはナニコヌンず同じ運呜を共有しおいるため、
圌らはあなたず䞀緒に私たちの䞖界に行く時間を持ちたせん。
神聖な知識。 したがっお、ほずんどすべおの人が知識に基づいお胜力があるわけではありたせん
䞀般的な、抜象的な、特定のものを匕き出すための
シンプルで明確なもの。 ゜フトりェア蚭蚈はそうではありたせん。

私は無駄に怜玢し、4人のギャングを読むこずができる人々を長い間探したした。
次に、抜象化を構築し、コヌドに正垞に適甚したす。 どちらかずいえば、それは人々に぀いおです
経隓なし。 どちらかずいえば、シングルトンはカりントされたせん。 頭の䞭の䜕かは、取るず生成するこずはできたせん
画像の郚分的な抜象化ず読み取りの肖像人が理解しおいないか
なぜこれが行われ、結果ずしお、抜象化は解決するよりも倚くの問題を䜜成する、たたは
正盎に蚀っお、圌はそれがどこに行き詰たるのかわからないこずを認めおいる。 おそらく、
私はそのような蚓緎方法を行うこずができたすが、圌らに䌚ったこずはありたせん。 あなたはどうですか

私の芳察によるず、特定からの䞀般の結論は、はるかに実行可胜なタスクです。
誰もが察凊したす。 はい、私は人自身が来るずきの堎合に぀いお話しおいる
熊手で壊れるパタヌン。 そしお、誰が理解するためだけに本を開きたすか
䞀般的に圌が圌の経隓から孊んだこずず呌ばれるもの。 圌が䜕もしなければ
この本が開かれるたでに孊んだので、ここではアプロヌチが機胜したせん。

䞻題の正匏な蚘述のレベルでの知識は、倚くの堎合、成功するには十分ではありたせん
そのアプリケヌション。 それらは、事実䞊の論理チェヌンに埋め蟌たれおいる必芁があり、
芚えるだけでなく、感じおください。 通垞、そのような理解
緎習の過皋で来たすあたり頻繁ではありたせん-数ヶ月たたは数幎埌に
頭の䞭の䜕かが萜ちたず感じ、それを䜿甚する準備ができたした。
そしお、プログラマヌがパタヌンに぀いお読んだかどうかに関係なく。 タスクが
圌の珟圚のアプロヌチの非効率性を瀺しおから、圌は決断を䞋し、
うたくいくでしょう。 圌がどのように頭の䞭で呌んでも。 説明する
別のプログラマヌに結果ずしお生じるパタヌンは、ほんの数分です。 それに加えお
パタヌンの説明は、これらの䟋ですべおのプログラマヌの脳に圢成されたす
それで、圌は共通の定矩を持ち、二人が圌を䜿っお、
たったく異なるこずに぀いお話したす
ゞャンクパタヌン。

プログラマヌが垞に
䜜品でパタヌンの公匏名を䜿甚し、さらに、制限されおいたす
これらの名前のみで、それらに関連付けられたロゞックを説明せずに、ほずんどの堎合
昚日の生埒か、パタヌンを䜿甚する熱心なJavaファンのどちらか
蚀語の制限を回避するこずがルヌチンの本質です。


広倧を受け入れる

拡匵可胜なコヌドを䜜成するこずを目的ずしたすべおのプラクティスは䞻題を残したす
このコヌドがサポヌトされ、拡匵されるずいう仮定の領域ぞの領域。 そしお
これがプログラミングず他の゚ンゞニアリングの最倧の違いです
アクティビティ-通垞、ナニットに十分な電力たたは機胜がない堎合、
より適切な別のナニットず亀換しおください。

プログラミングの暗黙の原則は、䜜成する代わりに
繰り返したすが、既存のものを拡匵たたは倉曎するこずをお勧めしたす。 技術の利点が可胜になりたす。 に
技術ずいう蚀葉は、物理デバむスをアップグレヌドしお実珟するこずを可胜にしたす
必芁な機胜。 それにもかかわらず、䜕らかの理由でこれは行われたせん。 きっず理由がある
本質的に玔粋に経枈的です。

れロから曞き盎し、完成したものを拡匵するずいう2぀のアプロヌチがあり、
2番目のオプションの方が優れおおり、劎働集玄的ではありたせん。 同時にそれを忘れる

a曲がっお曞かれた非拡匵コヌドの堎合、
機胜を远加する

b拡匵可胜なコヌドを䜜成する堎合、曞き換えのコストは既にかかっおいたす
初期コヌディング段階䞭

どちらの堎合も劎働は問題になりたすが、問題はそれ以䞊の堎合です。 そしおたさに
経隓豊富なプログラマは、この質問に察する答えを良い方法で知っおいる必芁がありたす。 経隓者
建築家はたわごずを曞くタスクを䞎えるこずができたすが、1぀の条件で-誰も
私はそれに぀いお知る必芁がありたす。


応甚分野

あなたは堎所を芋぀けるこずができないずいう事実のために䜕幎も堎所を芋぀けるこずができないかもしれたせん
あなたが読んだプラクティスですが、それはおそらくあなたに䜕かが間違っおいるずいう意味ではありたせん
そう。 知っおいお䜿甚しおいるパタヌンの数に関係なく、重芁なのはできるこずです
それらをその堎所に適甚したす。 䞀般的に、優れたデザむナヌの知識の量は
数か月で習埗できたすが、それらを正しく䜿甚する方法を孊ぶために
それには䜕幎もかかりたす。

少なくずも数十を含むシステムで䜜業しおいない堎合
関連クラスおよびそのようなシステムがたくさんありたす、どのように気にする必芁はありたせん
さたざたな抜象化から乱亀パヌティヌを䜜り、すべおが芋えるようにする方が良い
軜い゚ロティシズムが奜きです。 あなたは䞀般的に良いプログラマヌになるこずができたす
そのようなプロゞェクトに参加し、小さなプロゞェクトずシステムの間を移動したす
接続性が䜎い。

誰がなぜそれを䜿甚しおいるのかをただ理解したい堎合は、コヌドを調べおください
Java、C、C ++の倧芏暡プロゞェクト。 特に、以䞋のプログラマヌにずっお有甚です。
スクリプト蚀語。これにより、アプロヌチの違いを明確に確認できたす。
JavaやPythonなどでのプログラミングに。 ずにかく、芋぀けおも
特定のパタヌンの実装、それを心に留めおはいけたせん、
パタヌンは通垞、特定のプロゞェクト内で生成たたは遞択されたす。 だから䜕
あなたがそこに芋たものはあなたの珟圚に適甚できない可胜性がありたす
プロゞェクト。

圓局が「正しいコヌド」を曞くこずを芁求しおいる堎合-曞いおください あなたは本圓ですか
あなたはただあなたの専門レベルで䜕が悪いのか理解しおいない、そしおそれはあなたにずっお良い
チヌムリヌダヌがむデオロギヌを持っおいる堎合は、議論しないでください。
圌ず䞀緒に-普通のプログラマは圌の信仰を砎壊するこずはできたせんし、キックを取埗しないでください
あなたに。


どうする

あなたが理解しおいない䜕かを䜿甚する前に考え、よく考えおください。 もし
それはあなたにずっお䞍必芁なように思えたすが、本圓にそうなる可胜性がありたす。 それを芋たら
テストは犬のポケットずしおプログラムを必芁ずしたす-曞いおはいけたせん、あなたはただ
それらが圹に立぀ような方法でそれらを曞くこずはできたせん。 に粟通しおいる堎合
パタヌンのリスト、そしお恐怖で最埌のカップルのコヌドでそれを発芋したした
䜕幎も、せいぜい3〜4人が避難所を芋぀けたが、そうでなければあなたはあなたに満足しおいる
コヌド、およびそれで問題はありたせんし、すべおをそのたたにしおおきたす。

そしおもちろん、攻撃的なレトリックに察する人々の胜力は垞に戻っおいるこずを忘れないでください
それらの蚌拠ベヌスに比䟋。 そしお、あなたが品質になるたびに
仮想的な状況にアピヌルするために䜕らかのアプロヌチを䜿甚するための議論、
発生の確率が疑わしいほど小さいので、
祖母は祖父になるこずができたす。

Source: https://habr.com/ru/post/J178035/


All Articles