引数が示す情報について考えてみると
int main(int argc, const char* argv)
これはプログラムの「引数の数」と「引数の文字列群」を示す情報ですね。2つに分けて書いてもいいのですが、よく考えてみるとこれらは要するに「引数群」を表す情報をばらばらに渡しているということになります。それを
C
1typedef struct {
2 int count;
3 const char* string_vector;
4} Strings;
5
6int main(const Strings* args) {
7 ...
8}
と書けたらスッキリするのではないでしょうか。これは情報を構造化することで「プログラム上の意味をはっきりさせ、インターフェースも単純化できる」という利点があると思います。今日あまり耳にしない用語な気がします(※)が「構造化設計」というような考え方だと思います。
またばらばらな情報を意味のある塊として構造化していくと、それらの情報の操作(要するに関数)の機能の設計方法にも影響が出てきます。「あっちこっちの情報を参照して何か複雑怪奇な操作をする」ような関数群を設計する状態から「より単純で一般性のある操作に機能を分割してそれらを組みあわせることで複雑な機能を実現する」と見通してがよくなるため「同じことをあちこちに書かなくても済む」ようになり、それによって「自然にバグが少ない設計にできる」といった利点が生まれると思います。それをより自然に記述できるようにするために「特定の概念を表す情報群に関係が深い操作をその概念に対するメソッド」として表現できるようにするといったアイデアが生まれ、それがオブジェクト指向の一つの下地になったのではないかと思います。
本質問は「引数の数が多くて煩雑」ですが、その問題は本質的には上記に深い関係があるように思えました。オブジェクト指向的な設計(情報や操作をある概念ごとに整理)をすることで自然にそのような煩雑さは改善していくのではないでしょうか?
※: あまり耳にしない
構造化設計という用語を見かけないと言いましたが、ひょっとするとそれを推し進めたすぐ先にオブジェクト指向があるため、わざわざこの用語を用いる必要がなくなったからなのかも知れません。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。