|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
你通过从书的数量和开发周期及运行速度来证明:net网页编程和ruby要比java简单。次要是Java代码的质量办理,分为三个方面:
这恰好是三个递进的条理:代码看起来怎样->代码剖析起来怎样->代码跑起来怎样,Java在这几个方面都供应了十分优异的工具和几近无缝的Eclipse集成。
#代码作风
这个次要由Eclipse办理,设置在Preference/Java/CodeStyle中,包含:
- Cleanup-主动增加/删除/修正代码以更好的切合代码尺度,能够经由过程选中文件/文件夹,然后右键/Source/Cleanup运转.
- CodeTemplate-增加代码片断大概正文时利用的模板,正文能够经由过程Alt+Shift+J拔出
- Formatter-主动格局化代码,与Cleanup分歧的地方是只改动格局,经由过程Ctrl+Shift+F运转,假如要处置收拾项目,能够选中项目文件夹/右键/Source/Format举行格局化,另有个主动化的办法是经由过程SaveAction在保留时主动格局化
- OrganizeImports-主动增加import,主动排序import,快速键为Ctrl+Shift+O
Eclipse关于代码作风的撑持是云云的壮大以致于你很难写出不切合尺度的代码-这点关于C++来说,VisualStudio的撑持就减色的多了。
#代码静态剖析
-CheckStyle
CheckStyle基于源代码举行剖析,最后版本是供应一些代码作风的反省,但厥后慢慢增添了功效,也会反省一些基础的代码计划上的成绩,好比函数参数应当为final,不必要override的函数,应当是final的之类的。
CheckStyle能够在Preference/CheckStyle中举行设置,假如你想disable某些选项,你必要copy一份本人的设置先,CheckStyleConfiguration对话框便可以用来设置,也是检察各个style注释的尽好中央:
<br>
在开辟的时分间接利用Eclipse编译调试,但在公布的时分,一样平常还会利用ant来编译一个终极的jar大概war出来,何况,假如必要跑CI,ant编译剧本必不成少,checkstyle也供应了anttask:
<br>- <targetname="checkstyle"description="Runcheckstyles"><mkdirdir="${checkstyle.dir}"/><checkstyleconfig="${checkstyleinstall.dir}/sun_checks.xml"><filesetdir="${src.dir}"includes="**/*.java"/><filesetdir="${test.dir}"includes="**/*.java"/><formattertype="plain"/><formattertype="xml"toFile="${checkstyle.dir}/checkstyle_errors.xml"/></checkstyle></target>
复制代码
<br>
-Findbugs
Findbugs基于bytecode剖析,但能够没有sourcecode,它次要是剖析代码中bugpattern(简单激发bug的代码写法),其设置,大概说reference,能够在Preference/Java/Findbugs/DetectorConfiguration中找到,次要包含几个分歧的category:Maliciouscodevulnerability,Dodgecode,Badpractice,Correctness,Internationalization,Performance,Security,Multithreadedcorrectness,Experimental。别的,Findbugs接纳的是pluginarchitecture,用户能够便利的植进本人特定的反省。
<br>
Findbugs还供应了一些annotation,如NonNull,CheckForNull等,经由过程用户的共同举行更好的反省。
除Eclipse的plugin,Findbugs也供应了anttask:
<br>- <targetname="findbugs"depends="jar"><mkdirdir="${findbugs.dir}"/><findbugshome="${findbugs.home}"output="xml"outputFile="${findbugs.dir}interviewerportal-findbugs.xml"><sourcePathpath="${src.dir}"/><classlocation="${target.jar.name}"/></findbugs></target>
复制代码
<br>
#单位测试
天然是JUnit,利用十分复杂,晓得@Test和Assert就能够写testcase了,进一步就是利用TestFixture(@Before,@After,@BeforeClass,@AfterClass)写一拨testcase,其他具体点的,基础看看JUnitFAQ就弄定了:http://junit.sourceforge.net/doc/faq/faq.htm
一样,也能够放到ant中:
<br>- <pathid="classpath"><filesetfile="${target.jar.name}"/></path><targetname="junit"depends="jar"><mkdirdir="${report.dir}"/><junitprintsummary="yes"><classpath><pathrefid="classpath"/></classpath><formattertype="xml"/><batchtesttodir="${report.dir}"><filesetdir="${test.dir}"includes="**/*Test.java"/></batchtest></junit></target><targetname="junitreport"depends="junit"><junitreporttodir="${report.dir}"><filesetdir="${report.dir}"includes="TEST-*.xml"/><reporttodir="${report.dir}"/></junitreport></target>
复制代码
<br>别的,Junit只是个工具,用好工具是一方面,写出好的testcase又是别的一回事,这本小书值得一读:《单位测试之道》,特别是第四章和第五章,讲了怎样来计划测试用例。
第三点,关于究竟该测到甚么水平,征引一下KentBeck的话:Igetpaidforcodethatworks,notfortests,somyphilosophyistotestaslittleaspossibletoreachagivenlevelofconfidence(Isuspectthislevelofconfidenceishighcomparedtoindustrystandards,butthatcouldjustbehubris).IfIdonttypicallymakeakindofmistake(likesettingthewrongvariablesinaconstructor),Idonttestforit.Idotendtomakesenseoftesterrors,soImextracarefulwhenIhavelogicwithcomplicatedconditionals.Whencodingonateam,Imodifymystrategytocarefullytestcodethatwe,collectively,tendtogetwrong.
Differentpeoplewillhavedifferenttestingstrategiesbasedonthisphilosophy,butthatseemsreasonabletomegiventheimmaturestateofunderstandingofhowtestscanbestfitintotheinnerloopofcoding.Tenortwentyyearsfromnowwelllikelyhaveamoreuniversaltheoryofwhichteststowrite,whichtestsnottowrite,andhowtotellthedifference.Inthemeantime,experimentationseemsinorder Java的桌面程序开发在java程序员里通常叫swing开发,主要用的swing包里的类开发的,也就是通常说的c/s架构开发 |
|