我有一些报道;报告1,报告2,报告3
我正在使用一些Builder类以编程方式为不同的场景和部分构建这些报告。
命名我的网格表构建器类的一种方法是:
var builder = new Report1.GridTableBuilderForSection1()
其中Report1是命名空间(文件夹)。
第二种方法是使用它:
var builder = new GridTableBuilderForReport1ForSection1()
在类的方法中,类的名称变得很长。
在视图中命名这些类的最佳方法是什么?
答案 0 :(得分:0)
首先,“第1节”是一个糟糕的选择。上面的版本更好,因为你可以把东西放到不同的文件夹中。尝试更具想象力,或者其他:
var bldr; (not so important)
bldr = new InitialReport.SectionHeaderBuilder()
bldr2= new InitialReport.SectionDescriptionBuilder()
或者:(另一种方式排序,我很喜欢这个......但是根据你的母语来说,它有点奇怪)
b1 = new ReportInitial.getBuilderSecHeader()
b2 = new ReportSubsequent.getBuilderSecMain()
b3 = new ReportFinal.getBuilderSecGraphics()
..如果您经常使用自动完成功能,那就太棒了。
答案 1 :(得分:0)
几年前,我为数据仓库公司构建并设计了一个成功的高性能报表引擎,并使用策略模式或抽象工厂模式来解决类似问题......
Abstract Factory Pattern (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