我在下面的代码中担心的是构造函数的param实际上并不直接映射到类的实例字段。实例字段从参数中获取值,我使用initalize方法。此外,我做了一些工作,以便创建的对象可以直接用在后面的代码中。调用drawBoundaries()。我觉得这是做抽象意义上创建(初始化)Canvas的意思。是否违反Clean Code来调用这样的构造函数中的init方法
我的构造函数做得太多了吗?如果我添加方法从外部显式调用构造函数中的东西,那就错了。请让我知道你的意见。
public class Canvas {
private int numberOfRows;
private int numberOfColumns;
private final List<Cell> listOfCells = new LinkedList<Cell>();
public Canvas(ParsedCells seedPatternCells) {
initalizeCanvas(seedPatternCells);
}
private void initalizeCanvas(ParsedCells seedPatternCells) {
setNumberOfRowsAndColumnsBasedOnSeedPatten(seedPatternCells);
drawBoundaries();
placeSeedPatternCellsOnCanvas(seedPatternCells);
}
...
P.S .:对不起,如果这看起来像一个愚蠢的问题;我的代码将通过OOP大师进行审查,我只是担心:-0
编辑:
我读到的initalizeCanvas(方法的一些问题)被过度缠身 - 幸运的是,这些方法是私人的,不要打电话任何其他方法。
反正,经过对网络的进一步研究,我开始喜欢这个......我希望你们同意!! ??
public class Canvas {
private int numberOfRows;
private int numberOfColumns;
private final List<Cell> listOfCells = new LinkedList<Cell>();
private Canvas() {
}
public static Canvas newInstance(ParsedCells seedPatternCells) {
Canvas canvas = new Canvas();
canvas.setNumberOfRowsAndColumnsBasedOnSeedPatten(seedPatternCells);
canvas.drawBoundaries();
canvas.placeSeedPatternCellsOnCanvas(seedPatternCells);
return canvas;
}
我没有看到任何可疑的代码错误。 – 2011-04-23 14:35:04