命名班级的最佳方法是什么?

问题描述

| 我有一些报告;报告1,报告2,报告3 并且我正在使用一些Builder类,以编程方式针对不同的场景和部分构建这些报告。 命名“网格表”构建器类的一种方法是:
var builder = new Report1.GridTableBuilderForSection1()
其中Report1是命名空间(文件夹)。 第二种方法是使用此方法
var builder = new GridTableBuilderForReport1ForSection1()
在本节中,类的名称变得非常长。 在您的视图中命名这些类的最佳方法是什么?     

解决方法

        首先,“ Section1”是一个糟糕的选择。上面的版本更好,因为您可以将内容放入不同的文件夹中。尝试更具想象力的方法:
var bldr; (not so important)

bldr = new InitialReport.SectionHeaderBuilder()
bldr2= new InitialReport.SectionDescriptionBuilder()
    bldr3 = new GraphSummary.SectionDataBuilder() 或者:(以另一种方式排序,我非常喜欢这个..但是根据您的母语是什么,这有点奇怪)
b1 = new ReportInitial.getBuilderSecHeader()
b2 = new ReportSubsequent.getBuilderSecMain()
b3 = new ReportFinal.getBuilderSecGraphics()
..如果您经常使用自动补全功能,那就太好了。     ,        几年前,我已经为一家数据仓库公司构建并设计了一个成功的高性能报告引擎,并且我使用了Strategy模式或Abstract Factory模式来解决类似的问题... 策略模式(Wiki) 抽象工厂模式(wiki) 如果您使用策略方法,您的代码可能看起来像这样...
def report1 = new Report1()

report1.buildHeader(new FancyHeader(data);
report1.buildSection(new GridTable(data));
report1.buildFooter(new SimpleFooter(data));
或者,如果您只是希望使用名称非常相似的长名称来组织具体的类,则可以使用一种静态类层次结构来使代码更具可读性...
def thing = Reports.GridBuilders.EmployeeGrids.DailyEmployeeAttendance
def another = Reports.GridBuilders.EmployeeGrids.WeeklyPayroll
def oneMore = Reports.GridBuilders.EmployeeGrids.Managers