为了将分支逻辑的混乱推离客户端,我为每个计算类别编写了一个工厂,在给定账单信息的情况下应用适当的计算,如此(CalcType是枚举):
var bill = new Bill(){year = 2013};bill.AdvertisingFee = CalculationFactory.GetFee(CalcType.AdvFee,bill);
这很简单,但我对我的一些具体课程的实施方式感到困扰.这是计算界面:
public interface ITaxCalculation{ decimal Calculate();}
典型的实现将具有某种计算或数据访问权限,但某些年份/账单属性不产生广告费,如下所示:
public class FinanceCabinetAdvertisingFee : ITaxCalculation{ public decimal Calculate() { return 0.00M; }}
由于各种原因(税收年度不存在计算,国家购买账单等),这种存根类将存在于许多但不是所有计算类别中.
我的问题:像这样的无逻辑类是否被认为是代码气味,或者仅仅是对某些不稳定的真实世界系统进行建模的丑陋事实?我喜欢将这些案例牢记在一个类中而不是作为某些控制结构的默认返回值的想法,但我对这种问题的应用错误的模式应用的想法持开放态度.欢迎任何其他想法.
解决方法 我会将这样的神奇值放在数据库或配置文件中,如果要将其隐藏起来,可能会加密.然后这个类将是一个数据访问类,并且在需要时更容易和更模块化地对值进行更新.代码中的硬编码数据有时是必要的,但它可能不是最佳选择.
总结以上是内存溢出为你收集整理的c# – 无逻辑类:代码嗅觉或丑陋的系统事实?全部内容,希望文章能够帮你解决c# – 无逻辑类:代码嗅觉或丑陋的系统事实?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)