私は、ソフトウェアの開発が(とりわけ)自分自身に常に質問するプロセスであることを認識し始めています。コードの品質、懸念の分離、依存関係の最小化に関する質問...
しかし、主な質問は、精神病院に行かずにどこまで行けるかということです。
私は新しい仕事に応募しています。昨日、将来の雇用主と一緒にプログラミングの能力をテストしたいと考えていました。演習の1つは、このコードの機能を説明することでした。私は、彼らが開発するアプリケーション(vb.netのwinforms)のコードをいくつか試しました(病院の管理アプリケーションです)。これは、彼らが物事にどのようにアプローチするかを実際に見る機会を与えてくれました。
いくつかの例:
- どこかで見ました:[ここにサブルーチンの名前を挿入]を呼び出します->私は打たれました:それはVB6からのものではありませんか?
- それらには、ado.netを使用する個別のデータレイヤーがありますが、調べなければならない1つのメソッドは、呼び出し元レイヤーにデータセットを返します。そのため、データ層を分離するかどうかに関係なく、アプリケーションはado.netに関連付けられます(別のデータアクセスアプローチに切り替えない場合は問題になりません)。
- そのデータセットは現状のままで読み取られるため、データ中心のアプローチです(もちろん、「Patient」や「LabAnalysisRequest」などのクラスに含めることができるロジック/動作を議論することができます。
- また、文字列連結によるsqlクエリの構築を見たことがあると思います。
- ストアドプロシージャを使用します(私にとって、これはロジックの分散です)
- ビュー/コントローラーについての言及はありません:それはすべてフォーム駆動です
- 私が見た最もいことは:
TestEnvironment.IsTestingの場合 someVar = [ハードコーディングされた値] そうしないと someVar = [動的に取得した値] 終了する場合 [ここの関数の残り]
それはすべて、私が学校で学んだこととはまったく異なります:(永続性にとらわれない)ドメイン層、永続化層、プレゼンテーション層、ユニットテスト、...
だから私は私の質問を言い換えます:どのように基本的または独断的である必要がありますか?プログラマーはどの程度まで自分の原則に固執するべきでしょうか、それとも仕事をするコードを書くべきでしょうか?