我的应用程序中有一个数据类。我的应用程序永远不会被用作公共(public)API,我将是我项目中唯一开发代码的人。我正在尽我所能节省每一盎司的处理器和内存资源。让我的数据类中的数据成员具有公共(public)/protected/默认保护以便我不必使用getter是不是一个坏主意?使用setter/getter需要稍微多一点的内存和创建堆栈等等……我认为这是没有必要的。我认为使用getter的唯一原因是为了保护/隐私,但如果我是唯一的编码员并且没有其他人会使用我的API,那么不使用getter是个坏主意吗?请告诉我这是否愚蠢。 最佳答案
有点长的标题,但通常就是这个问题。我想知道您是否认为执行以下操作是个好主意。代替:publicvoidbuyItem(intitemId,intbuyerId){if(itemId我想要这样的东西:@Defensive("isPositive(#itemId,#buyerId)")publicvoidbuyItem(intitemId,intbuyerId){//buylogic}你认为这很好/糟糕/太花哨/太慢了吗?如果您真的认为它很好,我正在考虑使用SpEL要实现它,有没有人有更好/更轻/更快的想法?谢谢, 最佳答案 这不一定是
我有一个管理大型软件项目的用户首选项的类。项目中可能需要从持久存储中设置或检索用户首选项的任何类都将调用此类的静态方法。这种集中管理允许以编程方式完全删除首选项-如果每个首选项都在接近其使用代码的地方处理,散布在整个项目中,这是不可能的。我在这个过程中遇到了中心化设计的另一个含义。该软件有一个公共(public)API。该API可以在jar中自行提供。该API中的类可能引用pref管理类。因此,pref管理器必须放在APIjar中。每个首选项都可能有一个默认值。在软件启动时,可能会计算该默认值。该算法取决于偏好,因此倾向于驻留在使用代码附近。因此,如果pref管理器需要提供默认值,它会
在使用了一段时间后,我不禁觉得使用匿名类时被迫跳过的圈套是不值得的。你最终得到的是final,无论代码是什么,都比使用命名良好的内部类更难阅读。那么使用它们有什么好处呢?我一定是遗漏了什么。 最佳答案 优点是它是闭包的实现。它很笨重,但它是我们目前Java中最好的。换句话说,您不必为了保留一些您已经在某处作为局部变量获得的状态而创建新类。我有anarticlecomparingC#andJavaclosures,以及为什么它们首先有用,这可能会有所帮助。 关于java-匿名类(class
我一直发现遵守JavaBeans命名约定非常有用:getX()、setX()、isX()等。我认为JavaBean命名约定提供了几个主要优点:查看代码时,您可以立即确定方法的用途。在查看API文档时,所有方法都按照Java文档的字母顺序组合在一起。使用任何IDE的代码完成功能时,可以轻松直观地进行分类并找到您要查找的方法。这又是由于IDE的字母顺序。我知道有许多属于JavaAPI的类不使用JavaBeans命名约定。一个示例是ArrayList,它具有诸如size()之类的方法。我实际上有两个主要问题:始终尝试使用JavaBeans命名约定是个好主意吗?如果不是,为什么?我知道Arra
我们有一个处理请求的Java应用程序。自然地,有一个线程池,其中的线程以一些无关紧要的名称命名,如“processor-1”、“processor-2”等。我们想知道每次收到对名称的请求时重命名处理线程是否是个好主意这将指示正在处理哪个请求。我觉得这件事有问题,但想不出一个好的理由。我记得几个从线程转储中分析多线程问题的案例,知道我是否在两个连续的转储中看到同一个线程对我来说非常重要。但是,我意识到我可以改为查看线程ID。在log4j日志中,写线程名称是一种常见的做法,我记得很多情况下都是通过它进行过滤的。但我仍然不确定我在这里是否有良好的“防线”。常见的做法是什么?继续重命名线程是个
我正在设计一个数据库,并具有以下两个表:t_model(带有字段:model_id(PK),model_name)t_model_version(带有字段:model_id(PK,FK),model_version(PK),start_validity_date,end_validity_date)正如人们所看到的,t_model_version它的PK是复合PK。PK的田地部分也是FK(PK的PKt_model)。我想知道这是好还是坏习惯?我想避免以后遇到困难,因为我还无法预见...t_model拥有不同的模型(例如,不同的模型/功能形式以预测宏观经济增长)。t_model_version保
PMD警告我避免boolean实例化(出于效率原因)。我有这样的东西Booleanvariable=newBoolean(somestringIGotRepresentingABoolean);我应该用这个Booleanvariable=Boolean.valueOf(somestringIGotRepresentingABoolean);为什么这样更好? 最佳答案 原因是newBoolean总是返回一个新的实例。由于boolean实例是不可变的,因此拥有超过2个实例是没有意义的。一个为假,一个为真。试试这个,你会看到Boolean
这个问题在这里已经有了答案:HowexpensiveisdowncastinginJava6?[closed](1个回答)关闭8年前。我知道有两种类型的转换,即隐式和显式转换。我在StackOverflow上阅读了不同的问题,例如this,this和this但我仍然想知道在Java中进行转换的成本是多少,避免它是个好主意吗?它的最佳实践是什么?有两种类型的转换:Strings="Cast";Objecto=s;//implicitcastingObjecto=someObject;Strings=(String)o;//explicitcasting在第二种情况下,运行时会产生开销,因
关闭。这个问题是off-topic.它目前不接受答案。想改进这个问题吗?Updatethequestion所以它是on-topic用于堆栈溢出。关闭9年前。Improvethisquestion我正准备着手为一个friend的乐队建立一个面向音乐的网站,我想建立类似thistemplate.的网站。它使用ajax和深层链接。我担心Google无法抓取该网站。有什么我可以做的或可以调整的代码以使其可抓取吗?非常感谢!