[×ªÔØ]Java¿ª·¢×îÈÝÒ×·¸µÄ¼¸ÖÖ´íÎó
1.Duplicated Code
´úÂëÖØ¸´¼¸ºõÊÇ×î³£¼ûµÄÒìζÁË¡£ËûÒ²ÊÇRefactoringµÄÖ÷ҪĿ±êÖ®Ò»¡£´úÂëÖØ¸´ÍùÍùÀ´×ÔÓÚcopy-and-pasteµÄ±à³Ì·ç¸ñ¡£ÓëËûÏà¶ÔÓ¦OAOOÊÇÒ»¸öºÃϵͳµÄÖØÒª±êÖ¾¡£
2.Long method
ËüÊÇ´«Í³½á¹¹»¯µÄ“ÒŶ¾”¡£Ò»¸ö·½·¨Ó¦µ±¾ßÓÐ×ÔÎÒ¶ÀÁ¢µÄÒâͼ£¬²»Òª°Ñ¼¸¸öÒâͼ·ÅÔÚÒ»Æð¡£
3.Large Class
´óÀà¾ÍÊÇÄã°ÑÌ«¶àµÄÔðÈν»¸øÁËÒ»¸öÀà¡£ÕâÀïµÄ¹æÔòÊÇOne Class One Responsibility.
4.Divergent Change
Ò»¸öÀàÀïÃæµÄÄÚÈݱ仯Âʲ»Í¬¡£Ä³Ð©×´Ì¬Ò»¸öСʱ±äÒ»´Î£¬Ä³Ð©Ôò¼¸¸öÔÂÒ»Äê²Å±äÒ»´Î£»Ä³Ð©×´Ì¬ÒòΪÕâ·½ÃæµÄÔÒò·¢Éú±ä»¯£¬¶øÁíһЩÔòÒòΪÆäËû·½ÃæµÄÔÒò±äÒ»´Î¡£ÃæÏò¶ÔÏóµÄ³éÏó¾ÍÊǰÑÏà¶Ô²»±äµÄºÍÏà¶Ô±ä»¯Ïà¸ôÀë¡£°ÑÎÊÌâ±ä»¯µÄÒ»·½ÃæºÍÁíÒ»·½ÃæÏà¸ôÀë¡£ÕâʹµÃÕâЩÏà¶Ô²»±äµÄ¿ÉÒÔÖØÓá£ÎÊÌâ±ä»¯µÄÿ¸ö·½Ãæ¶¼¿ÉÒÔµ¥¶ÀÖØÓá£ÕâÖÖÏàÒì±ä»¯µÄ¹²´æÊ¹µÃÖØÓ÷dz£À§ÄÑ¡£
5.Shotgun Surgery
ÕâÕýºÃºÍÉÏÃæÏà·´¡£¶Ôϵͳһ¸öµØ·½µÄ¸Ä±äÉæ¼°µ½ÆäËûÐí¶àµØ·½µÄÏà¹Ø¸Ä±ä¡£ÕâЩ±ä»¯Âʺͱ仯ÄÚÈÝÏàËÆµÄ״̬ºÍÐÐΪͨ³£Ó¦µ±·ÅÔÚͬһ¸öÀàÖС£
6.Feature Envy
¶ÔÏóµÄÄ¿µÄ¾ÍÊÇ·âװ״̬ÒÔ¼°ÓëÕâЩ״̬½ôÃÜÏà¹ØµÄÐÐΪ¡£Èç¹ûÒ»¸öÀàµÄ·½·¨Æµ·±ÓÃget ·½·¨´æÈ¡ÆäËûÀàµÄ״̬½øÐмÆË㣬ÄÇôÄãÒª¿¼ÂǰÑÐÐÎªÒÆµ½É漰״̬ÊýÄ¿×î¶àµÄÄǸöÀà¡£
7.Data Clumps
ijЩÊý¾Ýͨ³£Ïñº¢×ÓÒ»Ñù³ÉÈºÍæË££ºÒ»Æð³öÏÖÔںܶàÀàµÄ³ÉÔ±±äÁ¿ÖУ¬Ò»Æð³öÏÖÔÚÐí¶à·½·¨µÄ²ÎÊýÖУ¬ÕâЩÊý¾Ý»òÐíÓ¦¸Ã×Ô¼º¶ÀÁ¢ÐγɶÔÏó¡£
8.Primitive Obsession
ÃæÏò¶ÔÏóµÄÐÂÊÖͨ³£Ï°¹ßʹÓü¸¸öÔʼÀàÐ͵ÄÊý¾ÝÀ´±íʾһ¸ö¸ÅÄƩÈç¶ÔÓÚ·¶Î§£¬ËûÃÇ»áʹÓÃÁ½¸öÊý×Ö¡£¶ÔÓÚMoney£¬ËûÃÇ»áÓÃÒ»¸ö¸¡µãÊýÀ´±íʾ¡£ÒòΪÄãûÓÐʹÓöÔÏóÀ´±í´ïÎÊÌâÖдæÔڵĸÅÄÕâʹµÃ´úÂë±äµÄÄÑÒÔÀí½â£¬½â¾öÎÊÌâµÄÄѶȴó´óÔö¼Ó¡£ºÃµÄϰ¹ßÊÇÀ©³äÓïÑÔËùÄÜÌṩÔʼÀàÐÍ£¬ÓÃС¶ÔÏóÀ´±íʾ·¶Î§¡¢½ð¶î¡¢×ª»¯ÂÊ¡¢ÓÊÕþ±àÂëµÈµÈ¡£
9.Switch Statement
»ùÓÚ³£Á¿µÄ¿ª¹ØÓï¾äÊÇOO µÄ´óµÐ£¬ÄãÓ¦µ±°ÑËû±äΪ×ÓÀà¡¢state»òstrategy.
10. Parallel Inheritance Hierarchies
²¢Ðеļ̳вã´ÎÊÇshotgun surgeryµÄÌØÊâÇé¿ö¡£ÒòΪµ±Äã¸Ä±äÒ»¸ö²ã´ÎÖеÄijһ¸öÀàʱ£¬Äã±ØÐëͬʱ¸Ä±äÁíÍâÒ»¸ö²ã´ÎµÄ²¢ÐÐ×ÓÀà¡£
11. Lazy Class
Ò»¸ö¸É»î²»¶àµÄÀà¡£ÀàµÄά»¤ÐèÒª¶îÍâµÄ¿ªÏú
Ïà¹ØÎĵµ£º
´¦ÀíÂÒÂëÎÊÌâ
1¡¢¹æ·¶Êý¾Ý¿âºÍÒ³ÃæËùÓбàÂëͳһΪһÖÖÀýÈçutf-8
2¡¢hibernateÁ¬½ÓÊý¾Ý¿âÉèÖÃÁ¬½Ó±àÂë
<session-factory>
<property name="connection.url">
jdbc:mysql://127.0.0.1:3306/leaveword?useUnicode=true&characterEncoding=utf-8
& ......
#dd_traces.pl (C) Marko Kivij?rvi 2006
# Dummy checks
die "Specify an input file!\n" if $ARGV[0] eq "";
die "File not found!\n" unless -e $ARGV[0];
die "Incorrect file extension for a C/C++ file!\n"
if ( $ARGV[0] !~ /(.*)\.(java)$/ );
# Constants
my $IMPORT_LOG_PACKAG = "\n ......
1. ObjectInputStream Óë ObjectOutputStreamµÄ¶Áд¶ÔÏó¿ÉÒÔÒÔ¶ÔÓ¦µÄ˳Ðò½øÐжà¸ö¶ÔÏóµÄ¶Áд¡£
2. Break Loop label¡£ ÔÚÑ»·Óï¾äǰ¼ÓÉÏÒ»¸ölabel£¬Èçlabel1: È»ºóÔÚÑ»·ÌåµÄÓï¾äÖмÓÈëbreak label1£¬¼´¿ÉÌø³ö¸ÃÑ»·£¬ÎÞÂÛÆäÊÇÄÚ²ãÑ»·
»¹ÊÇÍâ²ãÑ»·¡£ ......
¶ÔÓÚObjectÀà,ËüÌṩÁËÒ»¸ö×î×îÑÏÃܵÄʵÏÖ,ÄǾÍÊÇÖ»ÓÐÊÇͬһ¶ÔÏóʱ,equals·½·¨²Å·µ»Øtrue,Ò²¾ÍÊÇÈËÃdz£ËµµÄÒýÓñȽ϶ø²»ÊÇÖµ±È½Ï.Õâ¸öʵÏÖÑÏÃܵÃÒѾûÓÐʲôʵ¼ÊµÄÒâÒå, ËùÒÔÔÚ¾ßÌå×ÓÀà(Ïà¶ÔÓÚObjectÀ´Ëµ)ÖÐ,Èç¹ûÎÒÃÇÒª½øÐжÔÏóµÄÖµ±È½Ï,¾Í±ØÐëʵÏÖ×Ô¼ºµÄequals·½·¨
equals ·½·¨ÊÇ java.lang.Object ÀàµÄ·½·¨¡£
ÓÐÁ½ÖÖÓ ......
ADFÖлñµÃÊý¾Ý¿âÁ¬½Ó£¬¶ÁÈ¡xmlÎļþµÄÊý¾Ý£¬²¢½«Æäдµ½Êý¾Ý¿âÖУº
public static void main(String[] argv) throws Exception {
//»ñµÃÇý¶¯
Class driverClass = Class.forName("oracle.jdbc.OracleDriver");
&nb ......