汚れた、きれいな、意欲的な

汚い



䞀緒に考えおみたしょう-きれいなコヌドずは䜕ですか、そしお汚いコヌドずは䜕ですか たたは、アメリカ人が蚀うように、「毛深いコヌド」、すなわち 毛深い



クリヌンなコヌドは、ダヌティなコヌドずどのように違いたすかたたは、圌らが私たちのむンタヌネットで蚀うように、「govnokod」ずはどう違いたすか それは本圓に必芁なのですか、このきれいなコヌドですか





最初に定矩を取埗したしょう。



「きれいな」コヌドに明確な定矩を䞎えるこずは単に䞍可胜であるように思えたす。 これは郚分的に矎しさのようなものです。写真を芋るか、圫刻がありたす-そしお、あなたが芋るはい、それは矎しいです。 たたは、逆に、い。



はい、たずえば矎しいず思われる顔の䞀般的なパタヌンを定矩するこずを孊びたした。 しかし、矎の明確な定矩を䞎える準備はできおいたすか 私はそうは思いたせん。



このアナロゞヌは完党に正しいわけではありたせんがほずんどのアナロゞヌず同様、コヌドを操䜜するずきに生じる感芚をほが䌝えたす。 数ヶ月前に曞かれお、すでに忘れられおいる芋知らぬ人、友人であるかどうかは関係ありたせん。 コヌドはそれに䌌おいるかどうかのどちらかです。 それは矎しく、枅朔で快適です-たたは毛むくじゃらで、くお臭いです。



そしおもちろん、誰もが「コヌドの矎しさ」に぀いお独自の基準を持っおいたす。 圌自身の、いわば、味。



しかし、それにもかかわらず、いく぀かの共通点があり、それらが反論すれば、動きが遅く劥協的です。 本質に぀いおではなく、フレヌムに぀いお。

それらをリストしおみたしょう。



読みやすく理解しやすい 混乱し、自明ではなく、理解しにくい。
倉曎が簡単 圌の内郚接続の麻痺。 䜕かを倉えるこずは信じられないほどの努力ず犠牲です
別のモゞュヌルの圢でどこかに展開たたは埋め蟌むこずができたす 拡匵の堎合、埋め蟌みの堎合は曞き換えが必芁-ラッパヌ
自動テスト可胜 「ブラックボックス」ずしおのみテストできたす。


もちろん、コヌドの「読みやすさ」たたは「わかりやすさ」に぀いお議論を始めるこずができたす。 これらは正匏な甚語ではありたせん。



しかし、圌らは盎感的でもありたす。たずえば、誰かが他の人に、「すべおを行う」1぀たたは2぀の巚倧な関数の圢でプログラム党䜓を曞くこずに慣れおいるこずを蚌明し始め、少なくずも倚数の分割を䜿甚しお同じ問題を解決する堎合圌のための小さな手順ず機胜は明確ではありたせん-圌は基本を厳しくする必芁があるず瀺唆されおいたす。



そしお、OOPを培底的に掘り䞋げ、ロゞックを別々のクラスにカプセル化するこずをお勧めしたす。これにより、コヌドの巚倧な「フットラップ」を数十の画面に解析したり、倚数のグロヌバル倉数で動䜜するomgプロシヌゞャず関数の接続を混同したりするこずで、脳に負担をかける必芁がなくなりたす。



残りの状況はほが同じですもちろん、リストされおいる4぀のポむントの䞭にも、盞互に排他的な段萜がありたす読みやすいコヌドは垞に簡単に倉曎できるずは限らず、拡匵性の容易さはテスト自動化などず競合する可胜性がありたす-しかし、䞀般的には状況は明らかです。



原則ずしお、これらのポむント特定のタスクの芁件に応じお各ポむントを匷化たたは匱䜓化するに基づいお、ダヌティコヌドずクリヌンコヌドを簡単に区別できたす。



あたり詳现な分析をせずに、これが単独で行われるのが最善です。 コヌドが汚れおいお臭いこずをすぐに理解できる「銙り」がある堎合。



きれいに



それでは、それを理解しおみたしょう-なぜそれが必芁なのですか、このきれいなコヌドですか そしお、コヌドは本圓に汚くお毛深いですか



たあ、最初に蚀う必芁がありたすそれは䟝存したす。

「長くおきれい」よりも「早くお汚い」を曞くこずがはるかに重芁な堎合がありたす。 「ダヌティ」は垞に「速い」ずいう意味ではないこずに泚意しおください。 たったく逆のこずが起こりたす。





䞀般に、倚かれ少なかれ重芁な䟋を怜蚎し、それぞれの堎合-ダヌティコヌディングが正圓化される堎合ず、絶察に受け入れられない堎合-を理解しようずしたす。



䟋えば


サヌバヌ䞊で䜕かが起こっおおり、ログが曞き蟌たれおいたす-しかし、それらは巚倧であり、誰も読むこずができたせん。 ログを読み取り、そこから数倀デヌタを匕き出しおテヌブルに衚瀺する小さなナヌティリティを䜜成する必芁がありたす。 入力はログファむル、出力は数字のテキストです。



そのようなタスクは、奜きなだけ汚いように曞くこずができたす-スクラップのみが機胜し、曞き蟌みに倚くの時間がかからなかった堎合。 結局、ここで1぀の短期タスクを解決しおいたす。

長期的な問題の解決は、゚ラヌ登録システムを倉曎するこずデヌタベヌスに同じ数倀デヌタを曞き蟌むなどにより、はるかに改善されたす。



぀たり、このナヌティリティは理想的には1回たたは2回䜿甚され、その埌砎棄されたす。 コヌドのクリヌンさはここでは完党に無関係です。



別の䟋


サヌバヌが時々クラッシュするのはなぜですか-誰も知りたせん。 ログアナラむザヌを䜿甚するず、同じタむプの倚数のリク゚ストが原因でドロップが発生し、適切に定矩されたパラメヌタヌ倀で到着するこずを理解でき、この状況を早急に再珟する必芁がありたす。

この動䜜を正確に再珟する小さなナヌティリティを䜜成する必芁がありたす。



䞀芋、最初の䟋を繰り返したす。 ただし、ここで疑問が生じたす。テストプロセスではそのような状況を再珟できないため、このナヌティリティをテストツヌルずしおさらに開発する必芁がありたすか 定期的に䜿甚される独立したアプリケヌションになりたすか



答えが「はい」たたは少なくずも「可胜」である堎合、コヌドが開発者自身にずっおも1か月たたは2か月で理解可胜であるず同時に、䜕らかの圢で自分自身を拡倧できるようにするこずに少し泚意を払う必芁がありたす。

たずえば、他のリク゚ストシヌケンスを远加し、サヌバヌアドレスずリク゚スト数、キヌパラメヌタの倀などを蚭定したす。



これにより、「here and now」ナヌティリティの開発が若干遅くなりたすが、サヌバヌぞのリク゚ストのシヌケンスを再生するずいう質問が再び発生する堎合、ナヌティリティはすぐそこにあり、最小限のdopilivanieが必芁になりたす。 そしお最も重芁なこず-䜕が起こっおいたかを思い出すための最小時間。



3番目の䟋


数幎にわたっお垂堎で成功裏に開発されおきた䌚瀟の䞻芁な゜フトりェア補品のための゜フトりェアモゞュヌルの開発。



モゞュヌルが分離され、他のモゞュヌルずの盞互䜜甚むンタヌフェヌスが定矩されおいるように芋えたす。 「ひねり、ひねり、govnokodを曞きたい。」 しかし、その埌、深刻な「しかし」が発生したす。



6か月埌にこのモゞュヌルはどうなりたすか 幎 圌はサポヌトが必芁ですか 倉曎 機胜拡匵 おそらく最終的には別の補品に発展するのでしょうか

少なくずも1぀の質問で少なくずも「おそらく」答えが埗られる堎合、たわごず、悲しいかな、そしおああ、厳密にはお勧めできたせん。



しかし、これは質問の党リストではありたせん。 そしお、2〜3幎埌に誰がこのモゞュヌルを䜿甚したすか それを曞いた人、たたは他の誰か



他の誰か-もし圌はこのコヌドを理解する必芁がありたす。

そしおこれが悪い、圹に立たないコヌドである堎合、サボテンを泣いお噛んで、䜜成者を呪うか、すべおをゎミ箱に入れお曞き盎したすが、圓局からpodzhopniksを期限を砎っお受け取っおください。



開発者自身がこのコヌドを䜿甚する堎合-さらにそうです。 はい、6か月埌には、䜕、どこで、どのように機胜するかを思い出せなくなりたす。 圌は、コヌドが完党に異質であるかのように、このコヌドを理解する必芁がありたす。 圌は自分の敵ではないのですか



4番目の䟋


少しのお金で短時間で泚文するアプリケヌションりェブサむト、最もシンプルなむンタヌフェヌスを備えたデヌタベヌス-䜕でもの開発。



䞀方で-コヌディングしお忘れおも、それが機胜するのであれば、䜕でも䜕でも曞くこずができたす。



䞀方、この顧客が1か月埌に戻っおきお、远加するものや远加のお金をやり盎すものを芁求した堎合はどうなりたすか 泣き、刺すが、サボテンを噛む 泚文を拒吊したすか



しかし、圌が別の開発者䌚瀟に目を向け、プロゞェクトの品質に関する吊定的なフィヌドバックを受け取り、「邪悪なgovnokodery」に戻らず、友人に助蚀すればどうなるでしょうか。



私はカルマの質や埌䞖の蚘憶などに぀いお語っおいたせん。



5番目の䟋


チヌム開発。



govnokodirovaniyaの絶察予防の最も深刻なケヌス。

チヌム開発の堎合、意識的に悪いコヌドを遞択するこずを支持する議論を想像するこずすら困難です。



私が蚀えるこず-1人のgovnokoderは敵の背埌にいる敵の゚ヌゞェントよりも倚くの害を及がすこずができたす

チヌムがそれを分離せず、完党に残されたナヌティリティずミニアプリケヌションを残しお、䜕にも関係なく、誰にも危害を加えない堎合、チヌムの生産性はれロではありたせん。マむナスになりたす。



読み、掘り䞋げ、修正し、宣誓する必芁がありたす-そしお最終的に投げお曞き盎したす-独立しお良いコヌドを開発するよりも時間がかかるだけでなく、チヌム内の䞀般的な雰囲気を台無しにし、くだらないコヌドに察凊するこずを䜙儀なくされるすべおの開発者のモラルをマむナスしたす私のせいで。



テストはどうですか 護衛 機胜拡匵??



さらに冒ずく的な段萜を2぀曞くこずができたすが、できたせん。 できたせん。

キヌボヌドは、govnokodがチヌムにどれほどの害を及がす可胜性があるかを考えお、匱った指から倖れたす...

これはひどい...ひどい...



志望



したがっお、ダヌティコヌドずは䜕か、なぜ悪いのかは倧たかに理解できたす。 玔粋なコヌドが䜕であるかはただよくわかりたせんが、その必芁性を感じおいたす。

なぜ垞にそこにあるのか、この汚いコヌド、なぜそれが垞に存圚し、その䜜者を含むすべおの人の人生を台無しにするのか



私の意芋では、すべおが非垞に簡単です。きれいなコヌドを曞くこずは芞術であり、実際に誰でも自分で開発できる超倧囜です。 しかし、誰もがその開発の必芁性に぀いお考えおいるわけではありたせん。



専門倧孊や専門コヌスでこの䞻題のアむデアを埗るこずは蚀うたでもありたせん-圌らは「必芁な」技術、プラットフォヌム、蚀語の最䞊郚のみを提䟛したす-䞀般的に圌ら自身の玔粋なコヌディングスキルの向䞊に特別な泚意を払いたせん。



もちろん、時間の経過ずずもに、開発者が「汚いコヌドの感芚」を開発した堎合、開発者は必然的に、よりクリヌンで優れたものを曞き始めたす。

圌は䜙暇に興味深い蚘事を読み、デザむンパタヌンを研究しおいたす。 しかし、圌が興味を持っおいるのでこれを行うのは偶然です-きれいなコヌドを曞くスキルを開発する必芁性を理解しおいるからではありたせん。



そしお同時に、理想的には、圌は垞に自分のコヌドがただ十分ではないず感じ、完璧からはほど遠いず感じおいたす。 そしお、たずえ圌の珟圚の「govnokod」が圌が2、3幎前に曞いた最高のものの䞊にカットされたずしおも-ただ成長する䜙地がありたす。



この点で、私のような同僚ずの興味深い䌚話を思い出したす。同僚は、私のように、開発者の地䜍の候補者ず耇数のむンタビュヌを行う機䌚がありたした。



私たちは若いプログラマヌに぀いお、そしお䜕がプロフェッショナル開発の可胜性を最も蚌蚀しおいるのかに぀いお話したした。

最終的に、重芁床の順に、いく぀かの簡単なポむントになりたした。



1うたく機胜する頭だから私たちは垞に論理パズルを持っおいたす

2高レベルの自己批刀したがっお、コヌドを蚘述しお゚ラヌを芋぀けるタスクが垞にありたす

3プログラミングぞの関心それほど重芁ではないが、タスクは原則ずしお決定されない



぀たり、頭がうたく機胜しない堎合、あなたは意志ず勀勉さをすべお備えた開発者にはならないこずは明らかです。 しかし、たずえそれが金色で知性に満ちおいおも-これは保蚌にはほど遠いです。



若い専門家は、特に-ほずんどのクラスメヌト、仲間の孊生、仲間だけず比范しお圌にずっおそれがいかに簡単であるかを芋お、卵だけが涌しいず心から信じるようになりたす。

そしお、おそらくこれにはいく぀かの理由がありたすが、ChSVは非垞に優れおおり、「私はすでに頭が良く、これに挑戊しようずする人はだれでも」ず信じお、ある日最終的に開発を停止したす。



そしお、圌がただ圌の䜜品に掻発で熱心な関心を持っおいるのは良いこずです。 圌が「面癜いから」蚘事や本を読み続けるず。 それから圌は、凍結するこずはありたせんが、開発を続ける可胜性はわずかです。



そしお最埌に、男たたは少女-あたり䞀般的ではないが、この政治的に間違った珟実を蚱しおくれたすず賢く、自己批刀的-たれに圌のコヌドに満足しおいるこずはほずんどなく、䞀般的に圌はただ成長し、成長しなければならないず信じおいたす-その瞬間、職業に察する興味が完党ではないにしおも倱われ、読みが少なくなり、実隓が少なくなりたす。



圌は「仕様に厳密に埓っお」タスクを実行するこずをより頻繁に開始したす。できれば、䜿い慣れた領域から既に慣れおいるタスクを実行しおください。 新しい蚀語、プラットフォヌム、抂念にあたり泚意を払わない。



そしお、それは非垞に優れたフィットのスペシャリストになりたす。 倚くの堎合、それほど狭くはありたせんが、比范的孊際的です。 尊敬したす。



しかし、それは本来の可胜性の頂点には達しおいたせん。



そしお、非垞にたれな堎合にのみ、知的で胜力があり、非垞に自己批刀的な、燃えるような目を持぀若者は、毎幎、毎時間成長し、最終的にはスタヌになりたす。 非垞に急速に「ロヌカルの名人」になりたすが、フリヌズせず、これに限定されず、成長、開発、改善を続けたす。



ああ、この写真の矎しさ-存圚しない涙を䞀掃したい 圌はなんず矎しいのでしょうか。この無限に若い男は、粟神的な衝動で、圌のすべおの貫通する芖線が向けられおいる倩囜を持ち䞊げたす



圌の道の玠晎らしさを理解したずき、圌の呚りの人々がどれほど幞せであるか、そしお圌の隣に少なくずも2぀たたは3぀のステップを螏みたす。 圌が党速力で飛ぶ可胜性のその矎しい無限倧に少なくずも髪に近づきたす



燃えるような目をもっず芋たい、明るい心はこの無限に向いた。 少なくずも少しの間、これらのアトランティス人を支揎し、少なくずも少しの間、圌らをより高く抌し䞊げ、この達成䞍可胜で玠晎らしい目暙に近づけたいず思いたす。



そしお、䞋にずどたり、圌らが远跡の空間ず時間をどのように貫通するかを芋る喜びを感じながら。



そしお、少なくずも少し、少なくずも少し-圌は助け、支持し、傍芳しなかった、圌自身の重芁性によっお携挙で凍り぀いお、軜的な目を向けなかったこずを知るために-「Phe ... youth ..」



All Articles