OOP は巨大ですが、単純なアプリケーションを静かに高度なものにします
プログラマーは、楽器プログラムの台頭にさまざまなプログラミング パラダイムを費やしています。 アクセス可能ないくつかのトレンディなプログラミング パラダイムがあります: 構造化、手続き型、ハンディ、モジュール、およびオブジェクト指向です。 これらのパラダイムは、悪名高い楽器の流行の原則とパターンよりも早く来るアドバイスのコーディング方法を費やすことによって、プログラマーがソース コードを準備するのを助けます。 例として、私たちはステートメントをいくつかの手順 (機能) に配置することによって手続きパラダイムを費やす立場にあり、DRY および
YAGNI
ソースコードを余分に盗むという原則このストーリーでは、プロシージャルに基づいた、完全に完全にプログラミングされたパラダイムに代わるものを指摘します。 この代替プログラミング パラダイムは、既存のパラダイムや OOP からいくつかのアイデアを借りています。
これは明確な日です。私たちは、英語を賞賛する構文と現代的な言語要素のおかげで、さまざまなパラダイムを備えた人間にとって楽しいプログラミング言語を使用できる立場にあります。 OOP パラダイムは、ビルダーがソース コード ステートメントをレッスンに分解し、アクションを使用してステートフル オブジェクトを派生させるように動機付けます。 OOPは、交換エンティティをレッスンとして簡単に分離できる立場にあるため、交換指向の複雑さを修正するための着実な決定です。 例として、完全に完全に Python ベースの ERPNext 起動元プラットフォームは で継承を使用) 顧客 との交換エンティティ
父または母クラス:
初歩的なプログラミングオブジェクト指向の式は高度なアプリケーションを導き出すわけではありませんが、オブジェクト指向 (OO) に接続されたアイデアは、継承、ポリモーフィズム、および OO に本質的に完全に基づく完全に完全にパターンを導出するほとんどの場合プロットを賞賛します。 代わりに、私たちはスマート OOP を復元できない立場にあります。つまり、そのようなアイデアがなければ、完全にソース コードに完全に基づいています。 したがって、OOP に本質的に基づいた完全にインストルメント化されたタスクは、定期的に OOP の原則を使用して過度に設計され、パターンを導出する可能性があります。 その結果、PC 機器の単純な論理ドリフトは、一対のオブジェクトと散乱状態で複雑になる可能性があります。 現代のプログラミング言語は
Golang
を賞賛します この理由により、高度な OOP のアイデアを提供しないでくださいまた、フォーム階層の欠点により、Plod の「オブジェクト」は、実際には、C++ や Java に相当する言語よりも非常に軽量であると感じられます。 — プロット
オブジェクト指向のやり方に従うために、一対のケース (つまり、ユーティリティ、サーバー、構成など) を必要としないエンティティーのレッスンとオブジェクトを導き出すことさえ定期的に行うことが重要です。 この作業は、交換指向でないタスクで定期的に発生します。
OOP が定期的にタスクを複雑にする場合、上昇中の機器プログラムにとって、どの代替パラダイムが道徳的ですか? 関数型プログラミング? — 私たちは便利なプログラミングからいくつかのアイデアを費やす立場にありますが、もはやすべての小さなことではありません — 純粋な便利なプログラミングは、高度なファイル操作と数学的計算を賞賛する非一般的な支出ケースのソリューションを提供するためです.
いつ、絶対にベストな手順を最初にPCアルゴリズムを教えられましたか? — ドリフト チャートを使用したアルゴリズムの研究をほぼ完全に開始したのは、一般的な監視構造を研究することでした。 その後、構造化プログラミングについて、watch over ステートメントを処理することでほぼ完全に学習しました。 構造化プログラミングを使用して機器を確立することは、理論的な pc 科学アルゴリズムからの抽象化がゼロであり、CPU のネイティブ言語からの抽象化がまったくないため、高度ではありません (
ISA アセンブリ)。 構造化、モジュール化、手続き型、および便利なプログラミング パラダイムからのアイデアを組み合わせて、OOP の単純な代替を導き出すことができます。 OOP の簡単な置き換えは次のとおりです:
レッスンや手順ではなく、モジュールを費やすことができます (機能) 洗練されたメソッド (またはレッスン) ではなくレコード、ステートフル オブジェクトではなくレコード、修飾子へのエントリを派生させるのではなくカスタム コード スタイル、慢性的なクラス状態ではなくモジュール レベルの変数です。 例として、CLI プログラム コードをいくつかのコード
に分解した方法を見てください。 CommonJS モジュラー プログラミングの基礎ごとのモジュール:
モジュラープログラミングの例、スクリーンショット著者による
OOP では、一般的な財団では、クラスメソッド全体に常識を分散させます。次に、明示的な論理的ドリフトを達成するための一対の教訓を見ることができます。 きちんとした OOP ベースの完全に完全なタスクでは、アドバイスの論理ドリフトを決定することは、実際に時間を浪費します。 したがって、洗練されたメソッドではなく機能を記述する立場にあります。 しかし、非公開メソッドの代わりになるものは何ですか? プライベートな機能を表すためにカスタム コードを使用できます。 次の例の潜入捜査官:
きちんとした機能をより小さなプライベート機能に分解する、作者によるスクリーンショット プログラムの言語化を管理することは OOP で簡単かつ純粋ですが、継承を尊重するアイデアは、ドリフトを扱う言語化を複雑にする可能性があります。 手続き型プログラミングでプログラム verbalize を管理する方法は 2 つあります。国際変数を使用する方法と、引数として verbalize を渡す方法です。希望と要件に応じて 1 つの方法を使用してください。 議論に本質的に基づいた完全に言語化された処理は、十分にテスト可能で整然としたコードを生成します。 さらに、国際変数に基づいた完全に完全に言語化された処理は、もはや実行可能ではありません。多くの領域で言語化されたプログラムを変更しない限り、適切なコードが生成されます。
一部の非ループ アプリケーション (つまり、CLI アプリケーション、自動化スクリプト、ユーティリティなど) は、ほとんどの場合、慢性的な言語化を必要としないため、便利なパラダイムの純粋な機能のアイデアに従って、すべての機能を記述できます。 ファセット結果.
この手続き型プログラミングの置き換えは巨大なようですですが、ステートフル オブジェクトのスイミング プールにどのように取り組むのでしょうか。 例として、OOPなしでリストのコースをどのように実行しますか-本質的に完全に完全に基づいていますクラスの方向は? 手続き型プログラミングの世界では、オブジェクトがアカウントになります。 次の例の潜入捜査官:拡張子管理
モジュール Neutralinosフレームワーク、作者によるスクリーンショット
上記の C++ コード スニペットは、拡張管理モジュールのセクションです。 モジュールレベルの
loadedExtensions
変数とそれに接続されたいくつかのプロシージャ。 これを OOP パラダイムで書き直すと、次の 2 つの教訓が導き出されるようです:
拡張子
および ExtensionManager
、しかし今では、単一の最小限のモジュールですべての小さなことが簡単になります。 ここでは、拡張ファイルを処理するために文字列ベクトルを消去しますが、拡張アカウントに多くのフィールドがある場合 (もはやオブジェクトではありません)、構造体ベクトルを消費する立場にあります.
C は手続き型言語であるため、手続き型プログラミングの式を C で使用することは確かに可能です。 例として、 の機能を扱うファイルを確認してください。 Cの老舗図書館、見つめ合える
FILE をクロールすることが重要であること 特性を扱う各ファイルへのポインタ。 また、
で証明されているように、Linux カーネルのソース コードを調べることで、手続き型プログラミングのサンプルを監視する立場にあります。Linux カーネルからのインスタンス C 言語マップ
ソース、作者によるスクリーンショット純粋な手続き型パラダイムの利用C++、JavaScript、Python を称賛するトレンディなプログラミング言語では、これは本当に不可能です。 その理由は、これらの言語の長い歴史を持つライブラリ API が、プログラマーにオブジェクト指向の教訓を提供するからです。 例として、JavaScript の老舗ライブラリーがセットを作成するための OO インターフェースをどのように提供しているかを見てください:
let numbers=recent Build(); // コンストラクターnumbers.add(10); // クラス式
console.log(numbers.size); // クラスプロパティ
代わりに、C++ はさらに提供します C++ の老舗ライブラリとの対話を受け取るためのレッスンの言語化。 さらに言えば、現代のすべての安定したプログラミング言語はマルチパラダイム言語であるため、これらの言語は、ラムダ機能、コールバック、再帰、名前のない機能を備えた便利なプログラミングを強化します。 したがって、私たちは、本質的にOOPベースの完全に確立された完全に確立されたライブラリインターフェースを機能でラップすることにより、この代替手続き型パラダイムを任意のプログラミング言語で使用できる立場にあります。 ミッションのパラダイムのすべてを OOP に変えることをやめることで、OOP に本質的に基づいた完全に完全に確立されたライブラリのレッスンを手順の中で過ごすことができます。
OOP は、ほぼすべての実世界の複雑さを修正するための純粋なプログラミング パラダイムですが、CPU の合成です。立場。 CPU は明示的なプログラムの命令をオブジェクトと参照として言語化することには取り組みませんが、すべてのプログラムを手続きとパラメーターの言語化として扱います。 したがって、技術的な観点から見ると、純粋なプログラミング パラダイムは、上昇するインストゥルメント プログラムの手続き型パラダイムです。 それでさらに、交換指向の観点からすると、OOP は交換の常識とコードベースを適切にマッピングします。これが、ほとんどの交換指向の計測プログラムが多様なパラダイムではなく OOP を使用する傾向がある理由です。 また、手続き型プログラミング式は、交換指向の手段タスク (すなわち、電子商取引プログラム、給与支払手段など) でコードのにおいがすることもありますしかし、いくつかの楽器アプリケーションは、努力してレッスンに分解すると、高度なものに発展します。 また、OOP の原則を追加する傾向がある場合、アルゴリズムのソリューションは定期的に高度なものに発展します。 プログラマーとして、私たちは不要な複雑さを含めるのではなく、単純で最小限の効率的なソリューションで複雑さを解決することを定期的に受け取ります。 したがって、クラス図を描く前に、次の優れたミッションに向けて、手続き的で便利なモジュール混合式を作成してください。この話はもはや OOP を批判するものではありません — オーバーエンジニアリングの計画を取り除くことで、将来の機器タスクの単純さを盗むための代替パラダイムを確かに示しました. 次の話は、楽器のファッションにおいてシンプルさを維持することの利点を説明しています: 勉強してくれてありがとう