为什么要避免使用公共方法?封装的好处 - c#

                    
                
        

在拒绝投票之前,让我解释一下我的问题。我在设计体系结构方面有一点经验,并尝试进步。有人,当我修复错误时,得出一个结论,我们需要使我们的private方法成为public而不是使用它。那是使我的工作完成并修复错误的最快方法。我去找队长说了。当我从他那里鬼脸之后,我被解释说,每一个public方法都是一种非常昂贵的享受。有人告诉我,在项目的整个生命周期内都应支持每种public方法。以及更多..

我在想。确实!为什么当我查看代码时并不太清楚。当我设计自己的体系结构时,情况也不那么明显。我记得我的想法:

  啊,我将离开此方法public,谁知道,也许当系统扩展时它将变得有用。

我很困惑,以为我做了可扩展的系统,但是实际上我的界面上有很多垃圾。

我的问题:

如果方法真的很重要并且值得成为public,您如何向自己解释?是否有任何反例检查?您如何在不花几个小时在星体上的情况下训练private/public选择?

参考方案

我建议您阅读YAGNI http://c2.com/cgi/wiki?YouArentGonnaNeedIt

您应该编写适合实际需求的代码,因为编写符合想象的需求的代码会导致膨胀的代码难以维护。

我最喜欢的报价

  达到完美,不是没有其他需要补充的东西,而是
  当没有什么可以拿走的时候。
  
  -法国作家安托万·圣艾修伯(Antoine de Saint-Exupery)(1900-1944)

Java Globbing模式以匹配目录和文件 - java

我正在使用递归函数遍历根目录下的文件。我只想提取*.txt文件,但不想排除目录。现在,我的代码如下所示:val stream = Files.newDirectoryStream(head, "*.txt") 但是这样做将不会匹配任何目录,并且返回的iterator()是False。我使用的是Mac,所以我不想包含的噪音文件是.DS_ST…

Java:正则表达式模式匹配器是否有大小限制? - java

我的模式类似于OR:“word1 | word2 | word3”我大约有800个字。可能有问题吗? 参考方案 您仅受记忆和理智的限制。 :)

java:继承 - java

有哪些替代继承的方法? java大神给出的解决方案 有效的Java:偏重于继承而不是继承。 (这实际上也来自“四人帮”)。他提出的理由是,如果扩展类未明确设计为继承,则继承会引起很多不正常的副作用。例如,对super.someMethod()的任何调用都可以引导您通过未知代码的意外路径。取而代之的是,持有对本来应该扩展的类的引用,然后委托给它。这是与Eric…

JAVA 8具有任何匹配属性的对象的过滤器列表 - java

我的要求是通过匹配任何属性的字符串来过滤对象列表。例如,假设Contact类具有三个属性:街道,城市,电话。我知道java流过滤器是如何工作的,在这里我必须将输入字符串与每个属性进行比较,如下所示:contactList.stream().filter(contact -> contact.getStreet().equals("dubai&…

Scala-运行时字符串模板 - java

我想做的正是java的String模板,但是在scala中。但是,该库不适用于案例类:case class Obj(str:String) val st = new ST("xx $obj.str$ xx",'$','$') st.add("obj",Obj("repl…