Changes between Initial Version and Version 1 of codekata/refactor2


Ignore:
Timestamp:
11/07/2013 05:45:20 PM (12 years ago)
Author:
zhangyihui
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • codekata/refactor2

    v1 v1  
     1'''2013年10月4日代码道场活动纪实'''[[BR]] 
     2'''代码道场的参与者:'''李峰,秦鸿源,张艺辉,陈阳,王安宁,丁健勇,李炳岳,黄志强,李剑文,江毅超,刘必晓[[BR]] 
     3'''地点:'''4G会议室[[BR]] 
     4本期代码道场题目,依旧是上期代码题目,因为上期重构的方法,我们还可以重构得更好,并且有了上一期讨论的积累,对本期代码[[BR]] 
     5道场活动也起到一定的作用。[[BR]] 
     6上一期的代码道场活动的代码:[wiki:codekata/refactor 2013-09-27 Functions类htmlUrl方法重构 活动][[BR]] 
     7这次我们是整组人一起讨论如何重构htmlUrl方法,每个人都会提出自己的观点,想法以及给大家分析为什么要这样重构方法。[[BR]] 
     8毫无疑问,讨论过程是相当的激烈,一个想法刚说出来,马上被找茬,缺点立马出现;另一个想法刚说出来,也遭遇同样待遇。[[BR]] 
     9在这样的环境下讨论,团队的重要性就出来了,因为每个同事,都会思考其他同事提出来的想法,并且提炼里面有亮点的做法,而不是[[BR]] 
     10一味地自我陶醉在自己的想法中,对自身开发能力的提升,很有帮助。[[BR]] 
     11现在,我们先来看看本期代码道场的测试代码[[BR]] 
     12 
     13{{{ 
     14import junit.framework.Assert; 
     15 
     16import org.junit.Before; 
     17import org.junit.Ignore; 
     18import org.junit.Test; 
     19 
     20public class FunctionsTest { 
     21 
     22        private String appName = null; 
     23        private String itAppName = null; 
     24        private String rootUrl = null; 
     25        private String ucRoot = null; 
     26        private Topic topic = null; 
     27        private Forum forum = null; 
     28        private Post post = null; 
     29        private User user = null; 
     30 
     31        @Before 
     32        public void setUp() { 
     33                appName = "pcauto"; 
     34                itAppName = "itbbs"; 
     35                rootUrl = "http://bbs.pcauto.com.cn"; 
     36                ucRoot = "http://my.pcauto.com.cn"; 
     37                topic = new Topic(); 
     38                forum = new Forum(); 
     39                post = new Post(); 
     40                user = new User(); 
     41                forum.setFid(123L); 
     42        } 
     43 
     44        @Ignore 
     45        public void testHtmlUrl() { 
     46                // 变化的对象 Object,rootUrl,appName, 
     47                // Object是变化的,rootUrl,appName=auto 是固定的 
     48                Assert.assertEquals(rootUrl + "/topic-1342.html", 
     49                                Functions.htmlUrl(topic)); 
     50                Assert.assertEquals(rootUrl + "/404.html", 
     51                                Functions.htmlUrl((Topic) null)); 
     52                Assert.assertEquals(rootUrl + "/forum-123.html", 
     53                                Functions.htmlUrl(forum)); 
     54                Assert.assertEquals(rootUrl + "/post-789789_2424242.html", 
     55                                Functions.htmlUrl(post)); 
     56                Assert.assertEquals(ucRoot + "/2424", 
     57                                Functions.htmlUrl(user)); 
     58                Assert.assertEquals("1234567", 
     59                                Functions.htmlUrl("1234567")); 
     60 
     61        } 
     62 
     63        @Test 
     64        public void testHtmlUrlForum() { 
     65                Assert.assertEquals(rootUrl + "/forum-123.html", 
     66                                Functions.htmlUrl(forum)); 
     67                 
     68//              Assert.assertEquals(rootUrl + "/f123.html", 
     69//                              Functions.htmlUrl(forum, rootUrl, itAppName)); 
     70 
     71                Assert.assertEquals(rootUrl + "/404.html", 
     72                                Functions.htmlUrl((Forum) null)); 
     73 
     74        } 
     75 
     76        @Test 
     77        public void testHtmlUrlTopic() { 
     78                Assert.assertEquals(rootUrl + "/topic-1342.html", 
     79                                Functions.htmlUrl(topic)); 
     80 
     81//              Assert.assertEquals(rootUrl + "/1342.html", 
     82//                              Functions.htmlUrl(topic, rootUrl, itAppName)); 
     83                 
     84                Assert.assertEquals(rootUrl + "/404.html", 
     85                                Functions.htmlUrl((Topic) null)); 
     86        } 
     87 
     88        @Test 
     89        public void testHtmlUrlUser() { 
     90                Assert.assertEquals(ucRoot + "/2424/", 
     91                                Functions.htmlUrl(user)); 
     92                 
     93//              Assert.assertEquals(rootUrl + "/123.html", 
     94//                              Functions.htmlUrl(user, ucRoot, itAppName)); 
     95 
     96                Assert.assertEquals(rootUrl + "/404.html", 
     97                                Functions.htmlUrl((User) null)); 
     98        } 
     99 
     100        @Test 
     101        public void testHtmlUrlPost() { 
     102                Assert.assertEquals(rootUrl + "/post-789789_2424242.html", 
     103                                Functions.htmlUrl(post)); 
     104                 
     105//              Assert.assertEquals(rootUrl + "/p789789_2424242.html", 
     106//                              Functions.htmlUrl(post, rootUrl, itAppName)); 
     107 
     108                Assert.assertEquals(rootUrl + "/404.html", 
     109                                Functions.htmlUrl((Post) null)); 
     110        } 
     111 
     112        @Test 
     113        public void testHtmlUrlString() { 
     114                Assert.assertEquals("123456", 
     115                                Functions.htmlUrl("123456")); 
     116                 
     117//              Assert.assertEquals("123456", 
     118//                              Functions.htmlUrl("123456", rootUrl, itAppName)); 
     119 
     120                Assert.assertEquals(rootUrl + "/404.html", 
     121                                Functions.htmlUrl((String) null)); 
     122        } 
     123} 
     124}}} 
     125当然了,代码道场活动其中一个重要目的就是要训练我们的测试驱动开发能力,有了测试代码,实现方法写起来会更完美。[[BR]] 
     126这次重构之前的方法,其中一个改变就是将一些变量用properties格式的文件保存起来,用程序读配置的方式进行编码,代码如下:[[BR]] 
     127urltpl.properties文件[[BR]] 
     128{{{ 
     129TOPIC_URL = http://bbs.pcauto.com.cn/topic-{0}.html 
     130FORUM_URL = http://bbs.pcauto.com.cn/forum-{0}.html 
     131USER_URL = http://my.pcauto.com.cn/{0}/ 
     132POST_URL = http://bbs.pcauto.com.cn/post-{0}_{1}.html 
     133NOT_FOUND_URL = http://bbs.pcauto.com.cn/404.html 
     134}}} 
     135读配置类[[BR]] 
     136{{{ 
     137import java.util.ArrayList; 
     138import java.util.List; 
     139 
     140/** 
     141 * 系统常量 
     142 */ 
     143public final class SystemConstant { 
     144 
     145    private SystemConstant() { 
     146    } 
     147    public static final String AUTO_APP_NAME = "bbs6"; 
     148    public static final String BABY_APP_NAME = "baby"; 
     149    public static final String GAME_APP_NAME = "game"; 
     150    public static final String LADY_APP_NAME = "lady"; 
     151    public static final String HOUSE_APP_NAME = "house"; 
     152    public static final String ITBBS_APP_NAME = "itbbs"; 
     153    public static final String APPLICATION_NAME = "bbs"; 
     154    public static final int YES = 0; 
     155    public static final String YES_DESC = "YES"; 
     156    public static final int NO = 1; 
     157    public static final String NO_DESC = "YES"; 
     158    public static final String TRUE = "T"; 
     159    public static final String TRUE_DESC = "TRUE"; 
     160    public static final String FALSE = "F"; 
     161    public static final String FALSE_DESC = "FALSE"; 
     162    public static final int ERROR = -1; 
     163    public static final String ERROR_DESC = "ERROR"; 
     164    public static final long ROOT_FORUM = 1l; 
     165    public static final long TRASH_BIN = 1l;                                //回收站版块id,设为根版块 
     166    public static final long FID_DONTCARE = 0l; 
     167    public static final String APPCONFIG = "AC"; 
     168    public static final String CACHE_SEPARATOR = "-"; 
     169    public static final String USER_RIGHT_KEY = "user_right"; 
     170    public static final String COMMON_PAGE_SIZE = "CommonPageSize"; //通用显示条数 
     171    public final static String FORUM_PAGE_SIZE = "ForumPageSize"; //列表页每页显示主题条数 
     172    public static final String TOPIC_PAGE_SIZE = "TopicPageSize"; //帖子页每页显示帖子条数 
     173    public static final String VIEW_POST_PAGE_SIZE = "ViewPostPageSize"; //view post每页显示帖子条数 
     174    public static final String TOPIC_TYPE_VOTE = "vote"; 
     175    public static final String TOPIC_TYPE_ACTIVITY = "activity"; 
     176    public static final String TOPIC_TYPE_TRADE = "trade"; 
     177    public static final String TOPIC_TYPE_HTML = "html"; 
     178    public static final int ACTIVITY_ORIGINAL_VERSION = 1; 
     179    public static final int ACTIVITY_NOT_CENSOR = 0; 
     180    public static final int ACTIVITY_CENSOR_PASS = 1; 
     181    public static final int ACTIVITY_CENSOR_NOT_PASS = -1; 
     182    public static final int ACTIVITY_ITEM_NOT_CENSOR = 0; 
     183    public static final int ACTIVITY_ITEM_CENSOR_PASS = 1; 
     184    public static final int ACTIVITY_ITEM_CENSOR_NOT_PASS = -1; 
     185    public static final int ACTIVITY_ITEM_CENSOR_DELETE = -2; 
     186    public static final int ACTIVITY_SEX_MAN = 1; 
     187    public static final int ACTIVITY_SEX_WOMAN = 2; 
     188    public static final int ACTIVITY_SEX_ALL = 0; 
     189    public static final String TOPIC_CONFIG_CHECKED = "1"; 
     190    public static final String TOPIC_CONFIG_UNCHECKED = "0"; 
     191    public static final String TOPIC_CONFIG_TITLE_MAX_LENGTH = "topicTitleMaxLength"; 
     192    public static final String TOPIC_CONFIG_CONTENT_MIN_LENGTH = "topicContentMinLength"; 
     193    public static final String TOPIC_CONFIG_CONTENT_MAX_LENGTH = "topicContentMaxLength"; 
     194    public static final String TOPIC_CONFIG_UPLOAD_MAXNUM_PER_TIME = "uploadMaxNumPerTime"; 
     195    public static final String TOPIC_CONFIG_SHOW_CATEGORY = "showCategory"; 
     196    public static final String TOPIC_CONFIG_CHECK_CATEGORY = "checkCategory"; 
     197    public static final String TOPIC_CONFIG_SHOW_VOTE_CREATEATMIN = "showVoteCreateAtMin"; 
     198    public static final String TOPIC_CONFIG_CHECK_VOTE_CREATEATMIN = "checkVoteCreateAtMin"; 
     199    public static final String TOPIC_CONFIG_SHOW_VOTE_CONTRIBUTIONMIN = "showVoteContributionMin"; 
     200    public static final String TOPIC_CONFIG_CHECK_VOTE_CONTRIBUTIONMIN = "checkVoteContributionMin"; 
     201    public static final String TOPIC_CONFIG_SHOW_ACTIVITY_CITY = "showActivityCity"; 
     202    public static final String TOPIC_CONFIG_CHECK_ACTIVITY_CITY = "checkActivityCity"; 
     203    public static final String TOPIC_CONFIG_SHOW_ACTIVITY_AREA = "showActivityArea"; 
     204    public static final String TOPIC_CONFIG_CHECK_ACTIVITY_AREA = "checkActivityArea"; 
     205    public static final String TOPIC_CONFIG_SHOW_ACTIVITY_TYPE = "showActivityType"; 
     206    public static final String TOPIC_CONFIG_CHECK_ACTIVITY_TYPE = "checkActivityType"; 
     207    public static final String TOPIC_CONFIG_SHOW_ACTIVITY_COST = "showActivityCost"; 
     208    public static final String TOPIC_CONFIG_CHECK_ACTIVITY_COST = "checkActivityCost"; 
     209    public static final String TOPIC_CONFIG_SHOW_ACTIVITY_SEX = "showActivitySex"; 
     210    public static final String TOPIC_CONFIG_CHECK_ACTIVITY_SEX = "checkActivitySex"; 
     211    public static final String TOPIC_CONFIG_SHOW_TRADE_PRICE = "showTradePrice"; 
     212    public static final String TOPIC_CONFIG_CHECK_TRADE_PRICE = "checkTradePrice"; 
     213    public static final String TOPIC_CONFIG_SHOW_TRADE_OLDNEW = "showTradeOldNew"; 
     214    public static final String TOPIC_CONFIG_CHECK_TRADE_OLDNEW = "checkTradeOldNew"; 
     215    public static final String TOPIC_CONFIG_SHOW_TRADE_MODE = "showTradeMode"; 
     216    public static final String TOPIC_CONFIG_CHECK_TRADE_MODE = "checkTradeMode"; 
     217    public static final String TOPIC_CONFIG_SHOW_TRADE_ADDRESS = "showTradeAddress"; 
     218    public static final String TOPIC_CONFIG_CHECK_TRADE_ADDRESS = "checkTradeAddress"; 
     219    public static final String TOPIC_CONFIG_SHOW_TRADE_PHONE = "showTradePhone"; 
     220    public static final String TOPIC_CONFIG_CHECK_TRADE_PHONE = "checkTradePhone"; 
     221    public static final String TOPIC_CONFIG_SHOW_TRADE_QQNUM = "showTradeQQNum"; 
     222    public static final String TOPIC_CONFIG_CHECK_TRADE_QQNUM = "checkTradeQQNum"; 
     223    public static final String ACTIVITYITEM_CONFIG_SHOW_USERNAME = "showActivityItemUserName"; 
     224    public static final String ACTIVITYITEM_CONFIG_CHECK_USERNAME = "checkActivityItemUserName"; 
     225    public static final String ACTIVITYITEM_CONFIG_SHOW_PERSONS = "showActivityItemPersons"; 
     226    public static final String ACTIVITYITEM_CONFIG_CHECK_PERSONS = "checkActivityItemPersons"; 
     227    public static final String ACTIVITYITEM_CONFIG_SHOW_PHONE = "showActivityItemPhone"; 
     228    public static final String ACTIVITYITEM_CONFIG_CHECK_PHONE = "checkActivityItemPhone"; 
     229    public static final String ACTIVITYITEM_CONFIG_SHOW_DESC = "showActivityItemDesc"; 
     230    public static final String ACTIVITYITEM_CONFIG_CHECK_DESC = "checkActivityItemDesc"; 
     231    public static final String ACTIVITYITEM_CONFIG_SHOW_CITY = "showActivityItemCity"; 
     232    public static final String ACTIVITYITEM_CONFIG_CHECK_CITY = "checkActivityItemCity"; 
     233    public static final String ACTIVITYITEM_CONFIG_SHOW_CARNUM = "showActivityItemCarNum"; 
     234    public static final String ACTIVITYITEM_CONFIG_CHECK_CARNUM = "checkActivityItemCarNum"; 
     235    public static final String ACTIVITYITEM_CONFIG_SHOW_POSTNUM = "showActivityItemPostNum"; 
     236    public static final String ACTIVITYITEM_CONFIG_CHECK_POSTNUM = "checkActivityItemPostNum"; 
     237    public static final String ACTIVITYITEM_CONFIG_SHOW_ADDRESS = "showActivityItemAddress"; 
     238    public static final String ACTIVITYITEM_CONFIG_CHECK_ADDRESS = "checkActivityItemAddress"; 
     239    public static final String ACTIVITYITEM_CONFIG_SHOW_EMAIL = "showActivityItemEmail"; 
     240    public static final String ACTIVITYITEM_CONFIG_CHECK_EMAIL = "checkActivityItemEmail"; 
     241    public static final String ACTIVITYITEM_CONFIG_SHOW_MEMO1 = "showActivityItemMemo1"; 
     242    public static final String ACTIVITYITEM_CONFIG_CHECK_MEMO1 = "checkActivityItemMemo1"; 
     243    public static final String ACTIVITYITEM_CONFIG_SHOW_MEMO2 = "showActivityItemMemo2"; 
     244    public static final String ACTIVITYITEM_CONFIG_CHECK_MEMO2 = "checkActivityItemMemo2"; 
     245    public static final String ACTIVITYITEM_CONFIG_SHOW_MEMO3 = "showActivityItemMemo3"; 
     246    public static final String ACTIVITYITEM_CONFIG_CHECK_MEMO3 = "checkActivityItemMemo3"; 
     247    public static final String ACTIVITYITEM_CONFIG_SHOW_MEMO4 = "showActivityItemMemo4"; 
     248    public static final String ACTIVITYITEM_CONFIG_CHECK_MEMO4 = "checkActivityItemMemo4"; 
     249    public static final String ACTIVITYITEM_CONFIG_SHOW_MEMO5 = "showActivityItemMemo5"; 
     250    public static final String ACTIVITYITEM_CONFIG_CHECK_MEMO5 = "checkActivityItemMemo5"; 
     251    public static final String UPLOAD_KEEP_SOURCE = "uploadKeepSource"; 
     252    public static final int SCORE_TYPE_SIZE = 7; 
     253    public static final String SCORE_CONFIG_SCORE_STATUS = "scoreStatus"; 
     254    public static final String SCORE_CONFIG_SCORE_NAME = "scoreName"; 
     255    public static final String SCORE_CONFIG_SCORE_REPLY_SCORE = "scoreReplyScore"; 
     256    public static final String SCORE_CONFIG_SCORE_TOPIC_SCORE = "scoreTopicScore"; 
     257    public static final String SCORE_CONFIG_REWARD_USED_SCORE = "rewardUsedScore"; 
     258    public static final String SCORE_CONFIG_BUILD_TOPIC_SCORE = "scoreBuildTopicGrade"; 
     259    public static final String SCORE_CONFIG_MEMBER_USED_SCORE = "memberUsedScore"; 
     260    public static final String SCORE_CONFIG_HIDDEN_USED_SCORE = "contentHiddenUsedScore"; 
     261    public static final String SCORE_CONFIG_SCORE_TOPIC_MINUS = "scoreTopicMinus"; 
     262    public static final String SCORE_CONFIG_SCORE_REPLY_MINUS = "scoreReplyMinus"; 
     263    public static final String SCORE_CONFIG_SCORE_BE_REPLY = "scoreBeReply"; 
     264    public static final String SCORE_CONFIG_SCORE_VOTE = "scoreVote"; 
     265    public static final String SETTING_PICK = "settingPick"; 
     266    public static final String REMOVE_PICK = "removePick"; 
     267    public static final String TOPIC_ACTION_DELETE = "batchDelete"; 
     268    public static final String TOPIC_ACTION_MOVE = "move"; 
     269    public static final String TOPIC_ACTION_PICK = "pick"; 
     270    public static final String TOPIC_ACTION_LOCK = "lock"; 
     271    public static final String POST_ACTION_GRADE = "grade"; 
     272    public static final String TOPIC_ACTION_BUILD = "build"; 
     273    public static final String TOPIC_ACTION_HIGHLIGHT = "highlight"; 
     274    public static final String TOPIC_ACTION_STICK = "stick"; 
     275    public static final String TOPIC_ACTION_CANCELSTICK = "cancelStick"; 
     276    public static final String GRADE_COUNT_OPTIONS = "gradeOptions"; 
     277    public static final String OPERATE_REASONS = "reasonsForOperate"; 
     278    public static final String DATE_OPTION = "dateOptions"; 
     279    public static final String LOCK_DATE_MAP = "lockDateMap"; 
     280    public static final String HIGHLIGHT_COLOR_OPTIONS = "highlightColorOptions"; 
     281    public static final int TOPIC_UNLOCK_STATUS = 0; 
     282    public static final int TOPIC_LOCKED_STATUS = 1; 
     283    public static final int ORIGINAL_VERSION = 1; 
     284    public static final int TOPIC_NOT_BUILDED = 0; 
     285    public static final int TOPIC_BUILDED = 1; 
     286    public static final int TOPIC_UP = 0; 
     287    public static final int TOPIC_DOWN = 1; 
     288    public static final String EXPRITY_END_TIME = "2050-12-30"; 
     289    public static final String TOP_CONFIG_GLOBAL_MAX = "globalTopMax"; 
     290    public static final String TOP_CONFIG_FORUM_MAX = "forumTopMax"; 
     291    public static final int PLUGIN_INACTIVE = 0; 
     292    public static final int PLUGIN_ACTIVE = 1; 
     293    public static final String NOVIEWPOSTPAGE = "noViewPostPage"; 
     294    public static final String VIRTUALFLOOR = "virtualFloor"; 
     295    public static final String VIRTUALFLOORTIPS = "virtualFloorTips"; 
     296    public static final String PICK_CONFIG_NAME = "PickConfig"; 
     297    public static final String PICK_EXT_CONFIG_NAME = "ExtPickConfig"; 
     298    public static final String PICK_PRIORITY_CONFIG = "pickPriority"; 
     299    public static final int POST_IS_BEST_REPLY = 1; 
     300    public static final int POST_NOT_BEST_REPLY = 1; 
     301    public final static String TOPIC_TYPE_HOT = "hot";                  //帖子类型-最热贴 
     302    public final static String TOPIC_TYPE_HOT_DAY = "hot_day";          //帖子类型-昨日最热帖 
     303    public final static String TOPIC_TYPE_HOT_WEEK = "hot_week";        //帖子类型-本周最热帖 
     304    public final static String TOPIC_TYPE_HOT_MONTH = "hot_month";      //帖子类型-本月最热帖 
     305    public final static String TOPIC_TYPE_HOT_ALL = "hot_all";          //帖子类型-全部最热帖 
     306    public final static String TOPIC_TYPE_NEW = "new";                  //帖子类型-最新帖 
     307    public final static String TOPIC_TYPE_PICK = "pick";                //帖子类型-(昨日)精华帖 
     308    public final static String TOPIC_TYPE_PICK_DAY = "pick_day";        //帖子类型-昨日精华帖 
     309    public final static String TOPIC_TYPE_PICK_WEEK = "pick_week";      //帖子类型-本周精华帖 
     310    public final static String TOPIC_TYPE_PICK_MONTH = "pick_month";    //帖子类型-本月精华帖 
     311    public final static String TOPIC_TYPE_PICK_ALL = "pick_all";        //帖子类型-全部精华帖 
     312    public final static String TOPIC_ORDER_CREATEAT = "createAt";       //按创建时间排序 
     313    public final static String TOPIC_ORDER_LASTPOSTAT = "lastPostAt";   //按最后回复时间排序 
     314    public final static String TOPIC_ORDER_REPLYCOUNT = "replyCount";   //按回复数排序 
     315    public final static String TOPIC_ORDER_AWARD = "award";             //按悬赏分数排序 
     316    public final static String POST_INTERVAL_TIME = "postIntervalTime"; //时间间隔 
     317    public final static String NEED_EXAM_EMAIL = "needExamEmail"; //是否需要邮箱验证 
     318    public final static String EXAM_EMAIL_DATE = "examEmailDate"; //如果用户注册时间早于该时间则不需要邮箱验证 
     319    public final static String EXAM_EMAIL_URL = "examEmailUrl"; //邮箱验证地址 
     320    public final static String CRASH_FORUM_ID = "crashForumId"; //回收站 
     321    public final static String ADMIN_FORUM_ID = "adminForumId"; //版主俱乐部 
     322    public final static String HOURS_FOR_MARK_NEW_TOPIC = "hoursForMarkNewTopic"; //显示新帖标识时间 
     323    public final static String ACTIVITY_CITY_MAX_LENGTH = "activityCityMaxLength"; //活动城市最大字数 
     324    public final static String ACTIVITY_AREA_MAX_LENGTH = "activityAreaMaxLength"; //活动地点最大字数 
     325    public final static String ACTIVITY_TYPE_MAX_LENGTH = "activityTypeMaxLength"; //活动类型最大字数 
     326    public final static String CAPTCHA_EXPIRY = "captchaExpiry";//验证码在过期时间前,超过发帖或者回帖次数,则需要显示验证码 
     327    public final static String CAPTCHA_LIMIT = "captchaLimit";  //同上 
     328    public final static String IP_VOTE_INTERVAL_SECONDS = "sameIpVoteIntervalInSeconds"; //同一IP时间间隔内投票限制 
     329 
     330    public final static String PICTURE_SUBFIX = "_1024x1024";//图片后缀 
     331    public final static String PICTURE_SUBFIX_IT = "_1024x1024it";//电脑网带水印图片后缀 
     332 
     333    public final static String ALLOW_ATTACH = "allowAttach";    //允许上传附件 
     334 
     335    public static final String MSG_FEED_URL = "msgFeedUrl"; //消息队列 
     336     
     337    public static final String ATTACH_ROOT = "attach_root"; 
     338     
     339    /**汽车网特殊版块**/ 
     340    public static final long BRAND_PARENT_FID = 19; //品牌车型父版 
     341 
     342    public static final int TYPE_WEB = 1; 
     343    public static final int TYPE_WAP = 2; 
     344 
     345    public static final String PICK_1 = "pickA"; 
     346    public static final String PICK_2 = "pickB"; 
     347 
     348 
     349    /** 
     350     * 获取发帖配置列表 
     351     * 
     352     * @return 
     353     */ 
     354    public static List<String> getTopicPostConfigList() { 
     355        List<String> list = new ArrayList<String>(); 
     356        list.add(TOPIC_CONFIG_TITLE_MAX_LENGTH); 
     357        list.add(TOPIC_CONFIG_CONTENT_MIN_LENGTH); 
     358        list.add(TOPIC_CONFIG_CONTENT_MAX_LENGTH); 
     359        list.add(TOPIC_CONFIG_UPLOAD_MAXNUM_PER_TIME); 
     360        list.add(TOPIC_CONFIG_SHOW_CATEGORY); 
     361        list.add(TOPIC_CONFIG_CHECK_CATEGORY); 
     362        list.add(TOPIC_CONFIG_SHOW_VOTE_CREATEATMIN); 
     363        list.add(TOPIC_CONFIG_CHECK_VOTE_CREATEATMIN); 
     364        list.add(TOPIC_CONFIG_SHOW_VOTE_CONTRIBUTIONMIN); 
     365        list.add(TOPIC_CONFIG_CHECK_VOTE_CONTRIBUTIONMIN); 
     366        list.add(TOPIC_CONFIG_SHOW_ACTIVITY_CITY); 
     367        list.add(TOPIC_CONFIG_CHECK_ACTIVITY_CITY); 
     368        list.add(TOPIC_CONFIG_SHOW_ACTIVITY_AREA); 
     369        list.add(TOPIC_CONFIG_CHECK_ACTIVITY_AREA); 
     370        list.add(TOPIC_CONFIG_SHOW_ACTIVITY_TYPE); 
     371        list.add(TOPIC_CONFIG_CHECK_ACTIVITY_TYPE); 
     372        list.add(TOPIC_CONFIG_SHOW_ACTIVITY_COST); 
     373        list.add(TOPIC_CONFIG_CHECK_ACTIVITY_COST); 
     374        list.add(TOPIC_CONFIG_SHOW_ACTIVITY_SEX); 
     375        list.add(TOPIC_CONFIG_CHECK_ACTIVITY_SEX); 
     376        list.add(TOPIC_CONFIG_SHOW_TRADE_PRICE); 
     377        list.add(TOPIC_CONFIG_CHECK_TRADE_PRICE); 
     378        list.add(TOPIC_CONFIG_SHOW_TRADE_OLDNEW); 
     379        list.add(TOPIC_CONFIG_CHECK_TRADE_OLDNEW); 
     380        list.add(TOPIC_CONFIG_SHOW_TRADE_MODE); 
     381        list.add(TOPIC_CONFIG_CHECK_TRADE_MODE); 
     382        list.add(TOPIC_CONFIG_SHOW_TRADE_ADDRESS); 
     383        list.add(TOPIC_CONFIG_CHECK_TRADE_ADDRESS); 
     384        list.add(TOPIC_CONFIG_SHOW_TRADE_PHONE); 
     385        list.add(TOPIC_CONFIG_CHECK_TRADE_PHONE); 
     386        list.add(TOPIC_CONFIG_SHOW_TRADE_QQNUM); 
     387        list.add(TOPIC_CONFIG_CHECK_TRADE_QQNUM); 
     388        list.add(POST_INTERVAL_TIME); 
     389        list.add(NEED_EXAM_EMAIL); 
     390        list.add(EXAM_EMAIL_DATE); 
     391        list.add(EXAM_EMAIL_URL); 
     392        list.add(ACTIVITY_CITY_MAX_LENGTH); 
     393        list.add(ACTIVITY_AREA_MAX_LENGTH); 
     394        list.add(ACTIVITY_TYPE_MAX_LENGTH); 
     395        list.add(CAPTCHA_EXPIRY); 
     396        list.add(CAPTCHA_LIMIT); 
     397        return list; 
     398    } 
     399 
     400    /** 
     401     * 获取参与活动配置列表 
     402     * 
     403     * @return 
     404     */ 
     405    public static List<String> getActivityItemConfigList() { 
     406        List<String> list = new ArrayList<String>(); 
     407        list.add(ACTIVITYITEM_CONFIG_SHOW_USERNAME); 
     408        list.add(ACTIVITYITEM_CONFIG_CHECK_USERNAME); 
     409        list.add(ACTIVITYITEM_CONFIG_SHOW_PERSONS); 
     410        list.add(ACTIVITYITEM_CONFIG_CHECK_PERSONS); 
     411        list.add(ACTIVITYITEM_CONFIG_SHOW_USERNAME); 
     412        list.add(ACTIVITYITEM_CONFIG_CHECK_USERNAME); 
     413        list.add(ACTIVITYITEM_CONFIG_SHOW_PHONE); 
     414        list.add(ACTIVITYITEM_CONFIG_CHECK_PHONE); 
     415        list.add(ACTIVITYITEM_CONFIG_SHOW_DESC); 
     416        list.add(ACTIVITYITEM_CONFIG_CHECK_DESC); 
     417        list.add(ACTIVITYITEM_CONFIG_SHOW_CITY); 
     418        list.add(ACTIVITYITEM_CONFIG_CHECK_CITY); 
     419        list.add(ACTIVITYITEM_CONFIG_SHOW_CARNUM); 
     420        list.add(ACTIVITYITEM_CONFIG_CHECK_CARNUM); 
     421        list.add(ACTIVITYITEM_CONFIG_SHOW_POSTNUM); 
     422        list.add(ACTIVITYITEM_CONFIG_CHECK_POSTNUM); 
     423        list.add(ACTIVITYITEM_CONFIG_SHOW_ADDRESS); 
     424        list.add(ACTIVITYITEM_CONFIG_CHECK_ADDRESS); 
     425        list.add(ACTIVITYITEM_CONFIG_SHOW_EMAIL); 
     426        list.add(ACTIVITYITEM_CONFIG_CHECK_EMAIL); 
     427        list.add(ACTIVITYITEM_CONFIG_SHOW_MEMO1); 
     428        list.add(ACTIVITYITEM_CONFIG_CHECK_MEMO1); 
     429        list.add(ACTIVITYITEM_CONFIG_SHOW_MEMO2); 
     430        list.add(ACTIVITYITEM_CONFIG_CHECK_MEMO2); 
     431        list.add(ACTIVITYITEM_CONFIG_SHOW_MEMO3); 
     432        list.add(ACTIVITYITEM_CONFIG_CHECK_MEMO3); 
     433        list.add(ACTIVITYITEM_CONFIG_SHOW_MEMO4); 
     434        list.add(ACTIVITYITEM_CONFIG_CHECK_MEMO4); 
     435        list.add(ACTIVITYITEM_CONFIG_SHOW_MEMO5); 
     436        list.add(ACTIVITYITEM_CONFIG_CHECK_MEMO5); 
     437        return list; 
     438    } 
     439 
     440    public static List<String> getOtherConfigList() { 
     441        List<String> list = new ArrayList<String>(); 
     442        list.add(FORUM_PAGE_SIZE); 
     443        list.add(TOPIC_PAGE_SIZE); 
     444        list.add(VIEW_POST_PAGE_SIZE); 
     445        list.add(NOVIEWPOSTPAGE); 
     446        list.add(VIRTUALFLOOR); 
     447        list.add(VIRTUALFLOORTIPS); 
     448        list.add(CRASH_FORUM_ID); 
     449        list.add(ADMIN_FORUM_ID); 
     450        list.add(HOURS_FOR_MARK_NEW_TOPIC); 
     451        list.add(IP_VOTE_INTERVAL_SECONDS); 
     452        return list; 
     453    } 
     454} 
     455}}} 
     456好不容易啊,同事们为了使代码质量达到最高,代码是敲了又删,删了又敲,累到手指几乎抽筋,按之前讨论[[BR]] 
     457的方案进行编码,这种敬业精神,值得赞扬,要大大赞扬![[BR]] 
     458最后,就是写实现方法了,方法如下 
     459{{{ 
     460import java.io.IOException; 
     461import java.util.Properties; 
     462 
     463 
     464/** 
     465 *  
     466 * @author pc 
     467 * 
     468 */ 
     469public class Tpl { 
     470         
     471         
     472        public static String TOPIC_URL = ""; 
     473        public static String FORUM_URL = ""; 
     474        public static String USER_URL = ""; 
     475        public static String POST_URL = ""; 
     476        public static String NOT_FOUND_URL = ""; 
     477         
     478        static { 
     479                Properties urls = new Properties(); 
     480                try { 
     481                        urls.load(Tpl.class.getResourceAsStream("urltpl.properties")); 
     482                } catch (IOException e) { 
     483                        e.printStackTrace(); 
     484                } 
     485                 
     486                 
     487                TOPIC_URL = urls.getProperty("TOPIC_URL"); 
     488                FORUM_URL = urls.getProperty("FORUM_URL"); 
     489                USER_URL = urls.getProperty("USER_URL"); 
     490                POST_URL = urls.getProperty("POST_URL"); 
     491                NOT_FOUND_URL = urls.getProperty("NOT_FOUND_URL"); 
     492        }        
     493} 
     494 
     495}}} 
     496时间真的很可恶,感觉才刚进会议室,时间马上就跑到六点了,意味着这一期的代码道场活动结束了。[[BR]] 
     497当然,结束也得写总结的,有意义有收获的活动,不写下总结比一个饿了好几天的家伙,白白浪费一只烧鸡腿还可恶![[BR]] 
     498这期代码道场,同事们都很积极,讨论过程中都是经过快速思考的,没错,又是快速思考,这样真心会把脑子练得越转越快,不过,这是好事。[[BR]] 
     499并且,在这期活动中,能将工作中的方法研究彻底,是非常值得的,这样对于日后的工作,也会起到一定的作用。[[BR]] 
     500本期代码道场报道到此为止,欢迎同事们发表自己的想法,丰富这文档。