質問: 聞きたいこと ------ c#でよい設計ができるようになるためにどのように学習すればいいかアドバイスをください。 背景 -- 私は業務で開発に携わっています。 業務の都合上、webアプリ・サービスアプリ・デスクトップGUIアプリなど、サーバーサイド・クライアントサイド問わず開発してきて、フォームなどに比べると少し規模の大きいシステムの開発も経験しました。 チームではなく一人で開発することが多いです。 c#については、市販の本を使って勉強してきました。 そのため、c#の言語機能については、理解が足りない範囲もありますが、ある程度は広く知っています。 本題なのですが、私は今、c#でもっとよいコードを書けるようになりたいです。そういった能力を伸ばしたいと思っています。 うまく表現できませんが、具体的には、どういったクラス設計にするべきか、クラス間のインターフェースをどのようにするべきかなど、与えられたソフトウェアの要件をよりよいc#のコードで実現できるようになりたいのです。 現在の環境では、業務を通じてそういったことを学ぶことはできません。 開発をする方は他にもいて、皆私の上司なのですが、静的フィールドの参照インスタンスを共有するために継承を使ったり、フィールドをパブリックにしたり、しばしばひとつのメソッドが千ラインくらいあったり、ちょっと異常です。(私の環境ではこれがデフォです。) 私が携わるソフトの開発期間も、私の力ではいつもぎりぎりといったところで、プログラムの設計について試行錯誤しながらじっくり悩むような時間はありません。 そこでc#の書き方を勉強したときと同じように本をつかって自習したいのですが、なかなかいい本がありません。 これまで勉強してきた本は文法や言語機能やフレームワークのことを説明して終わりで、私が今知りたいのはそういったことではないのですが、表現の仕方が分からないのもあり、その辺は前提でっていうような本が見つからずアドバイスを募ってみることにしました。 本でも何でもいいのですが、よい学習の仕方があれば教えてください。加えて、すでにシステム開発などに携わっていて、とりあえず納品できるソフトを作ることはできるけど、その先にいくのに伸び悩んでいるような人におすすめのスキルアップの指針などもあれば、具体的に教えてほしいです。 お願いします。
回答: 周りにお手本となるような先輩・上司が見当たらないのでしたら、オープンソースでC#で書かれているものを探してソースを入手し解析してみてはいかがでしょうか。 オープンソースだから必ずしも洗練されたソースコードであるとは言い切れないかもしれませんが、自社とはまた違う文化で書かれたソースコードを読むことは、なにがしかのプラスになると思います。 思い切ってそういったオープンソースのプロジェクトに参加してみるというのもいいかもしれません。