|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
前些天,在CSDN上看到了一个消息,说是net网页编程网页编程AJAX成功在Linux上运行,这一点对我触动很大,而且引发了我许多感叹,所以想写出来分享一下。DustinMarx是一名专业软件开辟者,从业已有17年的工夫,他具有电子工程学士学位,仍是一名MBA。Dustin保护着一个博客,专门先容软件开辟的各个主题。克日,他撰文谈到了Java开辟中罕见的伤害旌旗灯号,提出了在一样平常的Java开辟中我们必要全力制止的一些不准确的做法。感乐趣的读者能够拜见本系列文章的第一部分。
缺少Javadoc正文
我偏向于将一切的左券办法(出格是public办法)都利用Javadoc正文起来。别的,我还以为对属性增加正文是需要的,正文要形貌分明属性存储的内容是甚么。我传闻有人拿代码是“自文档”的作为不写Javadoc正文的托言,不外我对此却其实不认同,我想对这些人说的是复杂的Javadoc正文能够表达出不异的信息,而浏览代码则必要消费更长的工夫。固然有些办法的名字会很长,但偶然也没法正确地形貌分明希冀的输出前提与输入了局。我以为良多Java开辟者(就像我一样)在利用JDK时更喜好浏览它的Javadoc正文而不是JDK源代码。既然云云,那我们本人编写的代码为什么就要反其道而行之呢?我偶然也会浏览源代码,这次要是由于正文不敷充实,或是举动与形貌的纷歧致,另有多是我有来由信任正文过时了。
我还喜好检察类属性的Javadoc正文。有些人偏向于在publicget/set办法前加上属性形貌信息,不外我不喜好这类体例,由于这么做就是在假定属性老是有get/set办法(我是不会做这类假定的)。
在办法的Javadoc正文中形貌完成细节
固然我以为没有Javadoc正文是个伤害旌旗灯号,不外毛病地利用Javadoc正文一样也是个伤害旌旗灯号。Javadoc正文不该该申明完成细节,而应当存眷于客户端对办法的希冀(参数)与办法对客户真个希冀(前往范例,另有多是抛出非常等)。在真实的面向对象体系中,完成应当是能够在public接口下举行修正的,因而将接口文档中的这些完成细节放到Javadoc正文中是不得当的做法。这是个“伤害旌旗灯号”,由于Javadoc中存在的完成细节会让我嫌疑正文的时效性。换句话说,这类正文常常会过时,跟着代码的不休演变而呈现毛病。
源代码中的正文
固然接口(一般是Javadoc)中缺少正文是一种伤害旌旗灯号,不外办法体和其他源代码中的正文也多是个伤害旌旗灯号,会招致潜伏的成绩。假如必要为代码增加正文以匡助人们了解代码的举动,那就很有多是代码的庞大性过年夜(“正文是恶臭代码的芬芳剂”,这句话有些幽默,不外在必定水平上却真的云云)。就像文中提到的浩瀚“伤害旌旗灯号”一样,偶然我也以为源代码中的正文是成心义的,能够供应良多信息,这时候就没有需要删除这些正文了。但是,我以为代码中的正文(不是接口形貌的Javadoc正文)应当只管少一些,并且次要应当存眷于“为何”这么写而不是“怎样做”。代码本身应当可以申明“怎样”这一成绩,不外良多时分是没法分明地注释出“为何”(因为客户/办理偏向、计划决议、正式的接口需求、正式的算法需求等等)。
完成承继(extends)
我看到良多时分利用extends(完成承继)都很不错,也合适于响应的场景。但良多时分也存在利用不妥的情形,完成承继会招致更多的贫苦。AllenHolub曾说到extends是罪恶的,四人帮的计划形式一书也用了很年夜的篇幅注释为什么说组合要比完成承继更好。跟着编写Java代码工夫的不休增加,更加主要的是跟着我保护Java代码工夫的不休增加,我愈来愈以为组合相对完成承继的上风了。我的确看到了完成承继所带来的优点,不外更多的时分类是被“硬塞”到承继系统傍边的,子类只不外是对UnsupportedOperationExceptions打洞或是“空完成”,由于他们所承继上去的办法其实不合用于他们本人。加上EffectiveJava一书中所说起的承继成绩(好比说详细类的equals与hashCode办法完成等),这真就成了一个年夜成绩了。完成承继其实不老是糟的,不外良多人常常没有准确地利用他们,因而我以为这是个“伤害旌旗灯号”。
无感化的代码
程序中呈现用不上的代码永久都不是一件功德。人们很快就会健忘它是怎样用的,为何要这么用。不久以后,开辟者就想晓得这是否是出于某个缘故原由被扔在那边的。无感化的代码不但会偶然义地增添代码长度,增添保护的庞大度,关于IDE来讲,无感化的代码另有大概会被不当心挪用,这类情形申明代码基呈现了成绩。
正文失落的代码
正文失落的代码大概不像可实行的、偶然义的代码那末糟,由于最少它不会被不当心地挪用,明显,这些代码是不会被用到的,不外这仍然是个伤害旌旗灯号,由于它标明大概会呈现潜伏的代码基成绩。就像偶然义的可实行代码一样,正文失落的代码越多,人们就越难了解代码为什么会呈现在那边、为何会被正文失落、不利用了为何不将其删撤除。开辟者不敢删除他们,由于留上去一定是有缘故原由的,只不外没人可以记起来缘故原由是甚么了。
To-Do语句
那这个对象有什么意义?现在很多用javabean的人就不能保证对象有完整的意义,不成熟的使用模式等导致代码疯狂增长,调试维护的时间要得多得多。在说性能之前,先说说你这个比较的来历。据说微软为了证明。net网页编程比java好。 |
|