c# – 无逻辑类:代码嗅觉或丑陋的系统事实?

c# – 无逻辑类:代码嗅觉或丑陋的系统事实?,第1张

概述我在一个应用程序上工作,该应用程序部分地计算税单金额.税单由许多可计算的字段(警长费,文员费,罚金,利息,统一费率等)组成,其计算方式通常是静态的,但可能因立法或特殊账单属性而改变.随着时间的推移,也可以删除或添加所有类别的计算. 为了将分支逻辑的混乱推离客户端,我为每个计算类别编写了一个工厂,在给定账单信息的情况下应用适当的计算,如此(CalcType是枚举): var bill = new B 我在一个应用程序上工作,该应用程序部分地计算税单金额.税单由许多可计算的字段(警长费,文员费,罚金,利息,统一费率等)组成,其计算方式通常是静态的,但可能因立法或特殊账单属性而改变.随着时间的推移,也可以删除或添加所有类别的计算.

为了将分支逻辑的混乱推离客户端,我为每个计算类别编写了一个工厂,在给定账单信息的情况下应用适当的计算,如此(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# – 无逻辑类:代码嗅觉或丑陋的系统事实?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1230575.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存