C++が当初Cのヘッダファイルの概念を放棄してモジュールメカニズムに加わると
// module 1 header file
// m1.h
#ifndef M1_H
#define M1_H
void function1();
void function2();
void function3();
void function4();
void function5();
void function6();
void function7();
// ...
class a
{
....
};
class b {...};
#endif
// module 1 source file
// m1.cpp
#include "m1.h"
......
// other-define.h
#ifndef OTHER_DEFINE_H
#define OTHER_DEFINE_H
...
#endif
// main.cpp
#include <stdio.h>
#include "other-define.h"
#include "m1.h"
int main(int argc, char* argv[])
{
...
return 0;
}
このようなファイルレイアウト、いわゆる「モジュール化」は、よく知られているのではないでしょうか.はい、何年も経っていますが、どのソフトウェアもそうです.頭の書類の洗礼を受けなければならない.
なぜ、なぜヘッダファイルという形で?唯一の答えは、Cと互換性を持つために、この万悪の邪悪な決定は、今のC++の極度の肥大化と濁りを招き、無数のウジの糞を這っているようだと思います.
選択に直面して、ある人は短い痛みを選んで、ある人は長い痛みを選んだ.当初C++方向を決めていたので、長痛を選びました.いわゆる互換性のために、馬鹿のような決定を下す.
今のC++はどんな言語ですか?誰がはっきり言えますか.
プロシージャ向け、オブジェクト向け、マルチパターン、メタプログラミング、...C++では、プロセスに向いたり、オブジェクトに向いたり、テンプレートに向いたり、けいれんに向いたりします.すぐにC++が何の言語なのかがわかります.
例えばこの『ヘッダファイル』の概念です.これはCのです.Cが使えるのはよくて、C++が使えるわけではありません.ほら、extern「C」というわけのわからないものがたくさん出ているのではないでしょうか.Cと互換性があると同時に新しい意味もあるため、あの人たちはわざわざC++の標準ライブラリを削除した.h接尾辞名、このように#include
今、CはまだそのCで、依然として一流のプログラム設計言語で、余分なものがなくて、余分な概念がありません.C++、みんな知っています.
その「互換C」の思考を放棄し、本当のモジュールメカニズムを加えると、今日はC++で開発するのも少し疲れます.
// module 1 source file
module m1
{
void function1()
{
...
}
void function2(){...}
void function3(){...}
...
class dt1 {...};
}
// #include ? ?
import std.io
import m1
int main(int argc, char* argv[])
{
dt1 _d = ... // or m1.dt1
function1(); // or m1.function1()
...
return 0;
}
もしあなたがC++で開発する時もこの言語の破壊を受けたら、もっと文章の批判を書くことをお勧めします.
あなたは时にはあなたの技術が足りないと思って一つのものを作ることができないかもしれませんが、実は、C++があなたの能力を制限しています.