3

我尽量做到极简主义。重复是个问题。我讨厌它。什么时候真的有问题?

  1. 什么是静态过度使用?
  2. 什么是现场方法过度使用?
  3. 什么是类过度使用?
  4. 还有更多类型的过度使用吗?

问题A:什么时候使用静态过多?

    private static class Data
    {
            private static String fileContent;
            private static SizeSequence lineMap;
            private static File fileThing;
            private static char type;
            private static boolean binary;
            private static String name;
            private static String path;
    }

    private static class Print
    {
            //<1st LINE, LEFT_SIDE, 2nd LINE, RIGHT_SIDE>
            private Integer[] printPositions=new Integer[4];                

            private static String fingerPrint;
            private static String formatPrint;

    }

问题B:什么时候用私有方法获取字段数据太多了?

    public Stack<Integer> getPositions(){return positions;}
    public Integer[] getPrintPositions(){return printPositions;}


    private Stack<String> getPrintViews(){return printViews;}
    private Stack<String> getPrintViewsPerFile(){return printViewsPerFile;}
    public String getPrintView(){return printView;}

    public String getFingerPrint(){return fingerPrint;}
    public String getFormatPrint(){return formatPrint;}


    public String getFileContent(){return fileContent;}
    public SizeSequence getLineMap(){return lineMap;}
    public File getFile(){return fileThing;}
    public boolean getBinary(){return binary;}
    public char getType(){return type;}
    public String getPath(){return path;}

    public FileObject getData(){return fObj;}
    public String getSearchTerm(){return searchTerm;}

有关的

4

2 回答 2

3

还有更多类型的过度使用吗?

是的……过度使用教条主义。

您需要平衡地理解何时适合使用这些构造(静态、字段、方法、类、接口等),以及何时不适合。简单地试图避免使用某些结构显然是错误的。

例如,静态字段存在一个问题,即整个JVM中该字段只能有一个实例。这意味着使用静态的代码往往是不可重入的,这可能使其在很多情况下无法使用;例如,当有多个线程或涉及递归时。但是,在某些情况下,您需要在整个 JVM 中只有一个实例,在这些情况下,静态是完全可以接受的。

(以上是对静力学问题的过度简化。我试图说明您应该如何思考这些事情。了解利弊,并根据您所听到的某些教条来判断每个案例的优劣/在某处阅读。)

于 2010-05-01T08:29:33.343 回答
1

“你可以,不代表你应该!”

如果您打算在代码中做或不做某事(例如静态字段、私有访问器、接口),我认为最简单的答案是有充分的理由采取这种立场。盲目地遵循“规则”是一个错误,如果没有人敢于更改代码,往往会造成维护噩梦。最好说,“我正在使用私有访问器,因为它给了我 X,例如我可以对所有数据访问/修改强制序列化”但是在所有类中使用私有访问器可能只是过度杀伤和浪费时间t 实现任何有形的东西。

于 2010-05-01T09:32:31.887 回答