我正在进行代码审查,并遇到了一个使用所有静态方法的类。入口方法接受几个参数,然后开始调用其他静态方法,并传递入口方法接收到的所有或某些参数。
它不像具有大量不相关的实用程序功能的Math类。在我自己的常规编程中,我很少编写Resharper弹出并说“这可能是静态方法”的方法,而当我这样做时,它们往往是无用的实用方法。
这种模式有什么问题吗?如果类的状态保存在字段和属性中或使用参数在静态方法中传递,这是否只是个人选择的问题?
UPDATE :传递的特定状态是数据库的结果集。该类的责任是从数据库的结果集中填充excel电子表格模板。我不知道这有什么区别。
这种模式有什么问题吗?如果类的状态保存在字段和属性中或使用参数在静态方法中传递,这是否只是个人选择的问题?
从我个人的经验来看,我已经处理了100个具有非常深层对象层次结构的KLOC应用程序,所有内容都继承并覆盖了其他所有内容,所有内容都实现了六个接口,甚至这些接口都继承了六个接口,系统实现了每个书中的设计模式等
最终结果:一个真正的面向OOP的架构,具有如此多的间接级别,因此调试任何东西都需要数小时。我最近开始使用这样的系统工作,在我看来,学习曲线被描述为“一堵砖墙,然后是一座山”。
有时,过度狂热的OOP会导致类过于精细,以至于实际上造成了净危害。
相比之下,许多功能性编程语言,甚至是F#和OCaml(以及C#!)之类的OO语言,都鼓励扁平和浅层次的学习。这些语言的库通常具有以下属性:
大多数大型库往往比深度库更广泛,例如Win32 API,PHP库,Erlang
BIF,OCaml和Haskell库,数据库中的存储过程等。因此,这种编程风格经过了严格的测试,并且在现实中。
我认为,设计最佳的基于模块的API往往比设计最佳的OOP
API更容易使用。但是,编码风格在API设计中同样重要,因此,如果您团队中的其他所有人都在使用OOP,并且有人以完全不同的方式实现某些东西,那么您可能应该要求重写以更紧密地配合您的团队编码标准。
我知道这个问题有点简单,但我真的想知道为什么不去留档,假设我有这样的课。 } 两个静态方法都抛出一个错误,指出 修饰符“静态”仅允许在常量变量声明中使用 我知道医生说 这在Java语言规范部分§8.1.3中有描述 8.1.3内部类和封闭实例 但我的问题是,调用简单值或属性与调用静态方法(无论是公共方法还是私有方法)有什么区别?。为什么可以调用属性,但不能调用方法。 谢谢
问题内容: 当其中的所有方法都是具体的时,有人在声明类抽象时有一些实际的编程情况吗? 问题答案: 好吧,您可能正在使用模板方法模式,其中存在多个都具有默认实现的覆盖点,但是组合的默认实现本身不合法-任何功能实现都必须是子类。 (是的,我不喜欢模板方法模式;)
问题内容: 请参见下面的代码段: 代码1 代码2 这些代码段之间有什么区别?两者都15作为答案输出。 问题答案: 静态方法属于类本身,而非静态(aka实例)方法属于从该类生成的每个对象。如果你的方法执行的操作不依赖于其类的单个特征,请将其设置为静态(这将使程序的占用空间减小)。否则,它应该是非静态的。 例: 你可以像这样调用静态方法:。如果你使用method2尝试该操作,它将失败。但这将起作用:;
相对来说,我是java的业余爱好者,一直使用类和对象调用静态变量和方法。当它们是静态的时,类和对象都可以使用它们。 为什么程序员不对类变量和方法都保持默认的静态?
问题内容: 这是我的方法: 我把它放回去。该方法有什么问题? 问题答案: 您的条件应为i * i <= num 您未考虑数字9,因此9 <9将导致错误。但是您需要检查9。
问题内容: 我知道创建一个非静态内部类对象需要一个外部类对象,而创建的非静态内部类对象会自动具有对该外部类对象的隐藏引用。但是为什么非静态内部类不能具有静态成员呢?Java设计人员只需要禁止在内部类的静态方法内访问非静态外部类字段,这样做会更有意义,不是吗? 如果在内部类中具有静态成员没有意义,那么为什么内部类可以通过继承具有静态成员的类来继承静态成员? 我也读了这篇文章。如前所述: 内部类可以继