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

时间:2011-06-23 10:59:35

标签: naming-conventions

我有一些报道;报告1,报告2,报告3

我正在使用一些Builder类以编程方式为不同的场景和部分构建这些报告。

命名我的网格表构建器类的一种方法是:

var builder = new Report1.GridTableBuilderForSection1()

其中Report1是命名空间(文件夹)。

第二种方法是使用它:

var builder = new GridTableBuilderForReport1ForSection1()

在类的方法中,类的名称变得很长。

在视图中命名这些类的最佳方法是什么?

2 个答案:

答案 0 :(得分:0)

首先,“第1节”是一个糟糕的选择。上面的版本更好,因为你可以把东西放到不同的文件夹中。尝试更具想象力,或者其他:

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()

..如果您经常使用自动完成功能,那就太棒了。

答案 1 :(得分:0)

几年前,我为数据仓库公司构建并设计了一个成功的高性能报表引擎,并使用策略模式或抽象工厂模式来解决类似问题......

Strategy Pattern (wiki)

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