開発者の数とプログラマの数...

おそらく誰かがこの記事を、「いかに悪い生活をするか」というテーマに関するもう一つの泣き言として理解するでしょう。 しかし、私はまだこれが誰かが自己改善を促すことを期待して書いています。 そして、突然、私たちの合理的な(信じたいと思う)文明の現在のリリースは、もう少し安定するでしょう。







私の不満の理由は、自分自身を「モバイル開発者」と呼ぶフリーランサーで働いていた別の悪い経験でした。 タスクは人のために設定され、彼はそれを完了しました-アプリケーションは何らかの形で機能しましたが、オブジェクトを削除するいくつかのバグはリストインデックスの誤った作業に関する悲しい考えを引き起こしました。 そして、これは悪い前兆です。 リストからの削除の操作方法がわからない場合、これは問題の始まりにすぎない可能性が高く、最悪の事態はさらに予想されます。







それで、原則として、すべてが起こりました。 TKがほぼ完成し、完全に支払われ、ソースコードが転送されたとき、私はお金を無駄に投げ込んだだけだと気づきました。







AndroidアプリケーションはJavaで記述されていることを思い出させてください-オブジェクト(いくつかの注意事項があります)YaP。 または、KotlinやScalaのような一部のオブジェクト機能(警告付き)PLでさえもです。







「Android開発者」と呼ばれる私たちのヒーローは、手続き型プログラミング(プログラミングの「青銅器時代」の一種)を習得することさえせず、構造レベル(「石器時代」)のどこかに留まりました。 単一のコピー/ペースト機能を備えたスティックに石のxを置いて、彼は私の将来のアプリケーション全体をまとめました。







ああ、この男はコピーペーストの天才です。 たとえば、リストからIDでオブジェクトを取得する必要があるたびに、彼はループを作成しました。 そして、リストのリストに出くわしたとき、彼はネストされたループを書きました。 したがって、私の新しいアプリケーションの80%は、さまざまな程度のネストの「はしご」サイクルで構成されていました...

これらすべてのサイクルは互いに非常に似ていましたが、たとえばプライベートメソッドを作成するために、getObjectById "developer"は推測しませんでした。 言うまでもなく、200行の長さの挿入および更新メソッドは90%一致しましたか?







私はこの「ハンドルのないスーツケース」のリファクタリングを開始しました(持ち運ぶのは不便です、それを落とすのは残念です-お金は返済されます)。 IDEAは私に重複部分を正直に強調し、それらを機能に入れることを提案しました。 F2(次の警告に進む)、Alt-Enter(オプションを表示)、Enter(最初のデフォルトオプションを選択)を押すだけです。 ソースコードを1.5倍削減できました。 開発者がこれを行うことを妨げたのは謎のままです。 IDEAに警告があるという無知はありますか?







その後、クラスのリファクタリングを開始しましたが、これもばかげてコピーされましたが、共通の機能を持つスーパークラスを作成しようとすることはほとんどありませんでした。 カプセル化と副作用に真剣に取り組む必要がありました。クラスの静的なパブリックプロパティは、Javaにグローバル変数が存在しない状態で人を置き換えることに成功しました。 たとえば、編集されたオブジェクトのidは、メインアクティビティのグローバル変数でした...







一般に、ソースコードは少なくとも3〜4倍に膨れ上がりました。 そして、プログラミングの主な公理を思い出させます。







コードが少ないほど、不具合は少なくなります。

バグのないコードのみがバグではありません。 (機能を維持しながら)不足しているコードは、あなたが努力すべき制限です。 この公理から、「より多くのコード-より多くのグリッチ」という文が驚くべき方法で続きます。 冗長コードは、コピーと貼り付けの主な問題です。コード内のバグの数がほぼ二次的に増加します。 この現象に対抗するために、命令型プログラミングの夜明けに、彼らは手順を考え出しました。 しかし、プログラマーは簡単な方法を探していませんでした...







しかし、泣き言をやめる 彼についてではなく、大学でプログラミングを教える方法についてです。最初の1年生がすぐにC ++(率直に言って、初心者には最適な言語ではありません)に乗ってOOPを学習したり、「o-big-from en-logarithm-en。」 そして、その前に少なくとも「亀のグラフィックス」について説明してくれた方がいいです。 実際、人々はプログラミングの非常に基本的なことを知りません。







しかし、ニンニクを手に入れましょう! あなたはとても賢く、今、「まあ、これは幼稚園だ!私はそれを絶対にしない」と考えています。 それはそうだとしましょう、そしてあなたはそれほど愚かなコピー&ペーストコードを書きません。 しかし、残りの、より複雑な概念とパラダイムをどれだけ学びました(そして適用しましたか)? 結局のところ、現代のYPはマルチパラダイムです。 そして、これらすべてのパラダイムを同時に適用する必要があります:オブジェクトメソッドを作成するとき、プロシージャでセマンティックコンプリートまたはリピートコードを選択し、汎用関数の結果としてクロージャを返します。カプセル化を忘れないでください。プロジェクトで新しい実用的なモジュールを起動し、解決された側面について覚えておいてください。 d。







以下の記事の投票は-上記のすべてを知っているかどうかを確認してください。 単一の技術やドメイン固有のライブラリはなく、一般的なパラダイムのみがあります。 自分をプログラマーと呼ぶ人は、あらゆるプログラミング言語(CSSからErlang、God-Sorry、1C、Rust)で上記のアプローチをすべて知って適用する義務があると確信しています。







それで、あなたは何を知っていますか(2〜3文で本質と長所と短所を説明し、最近どのようにそれを使用したかの例を与えることができますか?)







そこに何か新しいことがあるか、何を正しく説明できるかわからない場合は、暇なときにグーグルで検索して、「開発者」(言葉の意味が悪い)から本物のチューブ「プログラマー」に少しレベルを上げることをお勧めします。







PS:パラダイムのリストは完全であると主張していません。 コメントで追加を提案してください。








All Articles