コード再構築の一例


次の文書は次のとおりです.
http://coolshell.cn/articles/3005.html
 
 
以前お話しした「流行のプログラミングスタイル」を覚えていますか?いくつかの人は私にそれらのプログラミングスタイルが具体的にどんなものなのかと聞いた.次はコード再構築の例で、その流行のプログラミングスタイルがどのように実践されているかを見てみましょう.次の実践はフィクションではありません.同じようなものがあれば、番号を合わせて座ってください.
まず、次の式があります.
1 s = 7 ;
明らかに、この式の変数名はあまりにも意味がなく、プログラムの可読性に不利なので、意味のある変数名を取る必要があります.
1 slots = 7 ;
いいですが、その定数7はhard-codeかMagic numberで、しかも、この定数は名前がなくてもコードの可読性には不利でしょう.再変更:
 
1
2
3 SEVEN = 7 ; ... slots = SEVEN;
頼む!上は、これはどの門の改法ですか?(でも、これは真実であることを保証します)、定数名にも意味があるのではないでしょうか.
1
2
3 SLOTS_PER_WIDGET = 7 ; ... slots = SLOTS_PER_WIDGET;
まだまだですが、名前が重複する可能性があります.クラスに入れたほうがいいです.
1
2
3 import widgetConstants; ... slots = widgetConstants.SLOTS_PER_WIDGET;
今ではずいぶんよくなったように見えますが、オブジェクトに向いているので、FactoryやSingletonなどのDesign Patternを使うことを学ばなければなりません.
1
2
3 widgetModelFactory = WidgetModelFactory.getInstance(); widgetModel = widgetModelFactory.getWidgetModel() ; slots = widgetModel.getSlotsPerWidget();
もちろん、全体のクラス構造を考えると、上のものはまだ足りません.次は私たちの最終的な再構築コードです.(実際のJava世界へようこそ)
1
2
3
4
5
6
7
8
9 context = Context.getCurrentContext(); serviceDirectoryFactory = ServiceDirectoryFactory.getServiceDirectory(context); serviceDirectory = serviceDirectoryFactory.getServiceDirectory(context); serviceDescriptor = ServiceDescriptorFactory.getDescriptor( "widgetModelFactory" ); widgetModelFactoryServiceLocator = serviceDirectory.getServiceLocator(serviceDescriptor,context); widgetModelFactory = (WidgetModelFactory)widgetModelFactoryServiceLocator.findService(context); widgetModel = widgetModelFactory.getWidgetModel(context);
  slots = widgetModel.getSlotsPerWidget();
これは私达の颜の像の対象のプログラミングのモードで、N年前にあの有名な敏捷な方法论を吹聴する会社を面接する时、プログラムで1つのプログラムの问题を実现する时、彼らは私のプログラムに対してとても顧みないで、原因は2つあって、その1、私はTDDを使ってUT Caseを书いていないで、その2、私のプログラムの中で设计のモードがありません.(プログラミングはもともとテストと設計モードのためであり、元のニーズのためではないことを知っています)、今日、流行のコードスタイルに夢中になっているプログラマーたちにこの文だけを捧げます.
実は、このコードも以下のようなものです.
1 slots = thisWidget.getSlotCount();
(全文完了)