wiki:codekata/refactor2

Version 1 (modified by zhangyihui, 12 years ago) (diff)

--

2013年10月4日代码道场活动纪实
代码道场的参与者:李峰,秦鸿源,张艺辉,陈阳,王安宁,丁健勇,李炳岳,黄志强,李剑文,江毅超,刘必晓
地点:4G会议室
本期代码道场题目,依旧是上期代码题目,因为上期重构的方法,我们还可以重构得更好,并且有了上一期讨论的积累,对本期代码
道场活动也起到一定的作用。
上一期的代码道场活动的代码:2013-09-27 Functions类htmlUrl方法重构 活动
这次我们是整组人一起讨论如何重构htmlUrl方法,每个人都会提出自己的观点,想法以及给大家分析为什么要这样重构方法。
毫无疑问,讨论过程是相当的激烈,一个想法刚说出来,马上被找茬,缺点立马出现;另一个想法刚说出来,也遭遇同样待遇。
在这样的环境下讨论,团队的重要性就出来了,因为每个同事,都会思考其他同事提出来的想法,并且提炼里面有亮点的做法,而不是
一味地自我陶醉在自己的想法中,对自身开发能力的提升,很有帮助。
现在,我们先来看看本期代码道场的测试代码

import junit.framework.Assert;

import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;

public class FunctionsTest {

	private String appName = null;
	private String itAppName = null;
	private String rootUrl = null;
	private String ucRoot = null;
	private Topic topic = null;
	private Forum forum = null;
	private Post post = null;
	private User user = null;

	@Before
	public void setUp() {
		appName = "pcauto";
		itAppName = "itbbs";
		rootUrl = "http://bbs.pcauto.com.cn";
		ucRoot = "http://my.pcauto.com.cn";
		topic = new Topic();
		forum = new Forum();
		post = new Post();
		user = new User();
		forum.setFid(123L);
	}

	@Ignore
	public void testHtmlUrl() {
		// 变化的对象 Object,rootUrl,appName,
		// Object是变化的,rootUrl,appName=auto 是固定的
		Assert.assertEquals(rootUrl + "/topic-1342.html",
				Functions.htmlUrl(topic));
		Assert.assertEquals(rootUrl + "/404.html",
				Functions.htmlUrl((Topic) null));
		Assert.assertEquals(rootUrl + "/forum-123.html",
				Functions.htmlUrl(forum));
		Assert.assertEquals(rootUrl + "/post-789789_2424242.html",
				Functions.htmlUrl(post));
		Assert.assertEquals(ucRoot + "/2424",
				Functions.htmlUrl(user));
		Assert.assertEquals("1234567",
				Functions.htmlUrl("1234567"));

	}

	@Test
	public void testHtmlUrlForum() {
		Assert.assertEquals(rootUrl + "/forum-123.html",
				Functions.htmlUrl(forum));
		
//		Assert.assertEquals(rootUrl + "/f123.html",
//				Functions.htmlUrl(forum, rootUrl, itAppName));

		Assert.assertEquals(rootUrl + "/404.html",
				Functions.htmlUrl((Forum) null));

	}

	@Test
	public void testHtmlUrlTopic() {
		Assert.assertEquals(rootUrl + "/topic-1342.html",
				Functions.htmlUrl(topic));

//		Assert.assertEquals(rootUrl + "/1342.html",
//				Functions.htmlUrl(topic, rootUrl, itAppName));
		
		Assert.assertEquals(rootUrl + "/404.html",
				Functions.htmlUrl((Topic) null));
	}

	@Test
	public void testHtmlUrlUser() {
		Assert.assertEquals(ucRoot + "/2424/",
				Functions.htmlUrl(user));
		
//		Assert.assertEquals(rootUrl + "/123.html",
//				Functions.htmlUrl(user, ucRoot, itAppName));

		Assert.assertEquals(rootUrl + "/404.html",
				Functions.htmlUrl((User) null));
	}

	@Test
	public void testHtmlUrlPost() {
		Assert.assertEquals(rootUrl + "/post-789789_2424242.html",
				Functions.htmlUrl(post));
		
//		Assert.assertEquals(rootUrl + "/p789789_2424242.html",
//				Functions.htmlUrl(post, rootUrl, itAppName));

		Assert.assertEquals(rootUrl + "/404.html",
				Functions.htmlUrl((Post) null));
	}

	@Test
	public void testHtmlUrlString() {
		Assert.assertEquals("123456",
				Functions.htmlUrl("123456"));
		
//		Assert.assertEquals("123456",
//				Functions.htmlUrl("123456", rootUrl, itAppName));

		Assert.assertEquals(rootUrl + "/404.html",
				Functions.htmlUrl((String) null));
	}
}

当然了,代码道场活动其中一个重要目的就是要训练我们的测试驱动开发能力,有了测试代码,实现方法写起来会更完美。
这次重构之前的方法,其中一个改变就是将一些变量用properties格式的文件保存起来,用程序读配置的方式进行编码,代码如下:
urltpl.properties文件

TOPIC_URL = http://bbs.pcauto.com.cn/topic-{0}.html
FORUM_URL = http://bbs.pcauto.com.cn/forum-{0}.html
USER_URL = http://my.pcauto.com.cn/{0}/
POST_URL = http://bbs.pcauto.com.cn/post-{0}_{1}.html
NOT_FOUND_URL = http://bbs.pcauto.com.cn/404.html

读配置类

import java.util.ArrayList;
import java.util.List;

/**
 * 系统常量
 */
public final class SystemConstant {

    private SystemConstant() {
    }
    public static final String AUTO_APP_NAME = "bbs6";
    public static final String BABY_APP_NAME = "baby";
    public static final String GAME_APP_NAME = "game";
    public static final String LADY_APP_NAME = "lady";
    public static final String HOUSE_APP_NAME = "house";
    public static final String ITBBS_APP_NAME = "itbbs";
    public static final String APPLICATION_NAME = "bbs";
    public static final int YES = 0;
    public static final String YES_DESC = "YES";
    public static final int NO = 1;
    public static final String NO_DESC = "YES";
    public static final String TRUE = "T";
    public static final String TRUE_DESC = "TRUE";
    public static final String FALSE = "F";
    public static final String FALSE_DESC = "FALSE";
    public static final int ERROR = -1;
    public static final String ERROR_DESC = "ERROR";
    public static final long ROOT_FORUM = 1l;
    public static final long TRASH_BIN = 1l;                                //回收站版块id,设为根版块
    public static final long FID_DONTCARE = 0l;
    public static final String APPCONFIG = "AC";
    public static final String CACHE_SEPARATOR = "-";
    public static final String USER_RIGHT_KEY = "user_right";
    public static final String COMMON_PAGE_SIZE = "CommonPageSize"; //通用显示条数
    public final static String FORUM_PAGE_SIZE = "ForumPageSize"; //列表页每页显示主题条数
    public static final String TOPIC_PAGE_SIZE = "TopicPageSize"; //帖子页每页显示帖子条数
    public static final String VIEW_POST_PAGE_SIZE = "ViewPostPageSize"; //view post每页显示帖子条数
    public static final String TOPIC_TYPE_VOTE = "vote";
    public static final String TOPIC_TYPE_ACTIVITY = "activity";
    public static final String TOPIC_TYPE_TRADE = "trade";
    public static final String TOPIC_TYPE_HTML = "html";
    public static final int ACTIVITY_ORIGINAL_VERSION = 1;
    public static final int ACTIVITY_NOT_CENSOR = 0;
    public static final int ACTIVITY_CENSOR_PASS = 1;
    public static final int ACTIVITY_CENSOR_NOT_PASS = -1;
    public static final int ACTIVITY_ITEM_NOT_CENSOR = 0;
    public static final int ACTIVITY_ITEM_CENSOR_PASS = 1;
    public static final int ACTIVITY_ITEM_CENSOR_NOT_PASS = -1;
    public static final int ACTIVITY_ITEM_CENSOR_DELETE = -2;
    public static final int ACTIVITY_SEX_MAN = 1;
    public static final int ACTIVITY_SEX_WOMAN = 2;
    public static final int ACTIVITY_SEX_ALL = 0;
    public static final String TOPIC_CONFIG_CHECKED = "1";
    public static final String TOPIC_CONFIG_UNCHECKED = "0";
    public static final String TOPIC_CONFIG_TITLE_MAX_LENGTH = "topicTitleMaxLength";
    public static final String TOPIC_CONFIG_CONTENT_MIN_LENGTH = "topicContentMinLength";
    public static final String TOPIC_CONFIG_CONTENT_MAX_LENGTH = "topicContentMaxLength";
    public static final String TOPIC_CONFIG_UPLOAD_MAXNUM_PER_TIME = "uploadMaxNumPerTime";
    public static final String TOPIC_CONFIG_SHOW_CATEGORY = "showCategory";
    public static final String TOPIC_CONFIG_CHECK_CATEGORY = "checkCategory";
    public static final String TOPIC_CONFIG_SHOW_VOTE_CREATEATMIN = "showVoteCreateAtMin";
    public static final String TOPIC_CONFIG_CHECK_VOTE_CREATEATMIN = "checkVoteCreateAtMin";
    public static final String TOPIC_CONFIG_SHOW_VOTE_CONTRIBUTIONMIN = "showVoteContributionMin";
    public static final String TOPIC_CONFIG_CHECK_VOTE_CONTRIBUTIONMIN = "checkVoteContributionMin";
    public static final String TOPIC_CONFIG_SHOW_ACTIVITY_CITY = "showActivityCity";
    public static final String TOPIC_CONFIG_CHECK_ACTIVITY_CITY = "checkActivityCity";
    public static final String TOPIC_CONFIG_SHOW_ACTIVITY_AREA = "showActivityArea";
    public static final String TOPIC_CONFIG_CHECK_ACTIVITY_AREA = "checkActivityArea";
    public static final String TOPIC_CONFIG_SHOW_ACTIVITY_TYPE = "showActivityType";
    public static final String TOPIC_CONFIG_CHECK_ACTIVITY_TYPE = "checkActivityType";
    public static final String TOPIC_CONFIG_SHOW_ACTIVITY_COST = "showActivityCost";
    public static final String TOPIC_CONFIG_CHECK_ACTIVITY_COST = "checkActivityCost";
    public static final String TOPIC_CONFIG_SHOW_ACTIVITY_SEX = "showActivitySex";
    public static final String TOPIC_CONFIG_CHECK_ACTIVITY_SEX = "checkActivitySex";
    public static final String TOPIC_CONFIG_SHOW_TRADE_PRICE = "showTradePrice";
    public static final String TOPIC_CONFIG_CHECK_TRADE_PRICE = "checkTradePrice";
    public static final String TOPIC_CONFIG_SHOW_TRADE_OLDNEW = "showTradeOldNew";
    public static final String TOPIC_CONFIG_CHECK_TRADE_OLDNEW = "checkTradeOldNew";
    public static final String TOPIC_CONFIG_SHOW_TRADE_MODE = "showTradeMode";
    public static final String TOPIC_CONFIG_CHECK_TRADE_MODE = "checkTradeMode";
    public static final String TOPIC_CONFIG_SHOW_TRADE_ADDRESS = "showTradeAddress";
    public static final String TOPIC_CONFIG_CHECK_TRADE_ADDRESS = "checkTradeAddress";
    public static final String TOPIC_CONFIG_SHOW_TRADE_PHONE = "showTradePhone";
    public static final String TOPIC_CONFIG_CHECK_TRADE_PHONE = "checkTradePhone";
    public static final String TOPIC_CONFIG_SHOW_TRADE_QQNUM = "showTradeQQNum";
    public static final String TOPIC_CONFIG_CHECK_TRADE_QQNUM = "checkTradeQQNum";
    public static final String ACTIVITYITEM_CONFIG_SHOW_USERNAME = "showActivityItemUserName";
    public static final String ACTIVITYITEM_CONFIG_CHECK_USERNAME = "checkActivityItemUserName";
    public static final String ACTIVITYITEM_CONFIG_SHOW_PERSONS = "showActivityItemPersons";
    public static final String ACTIVITYITEM_CONFIG_CHECK_PERSONS = "checkActivityItemPersons";
    public static final String ACTIVITYITEM_CONFIG_SHOW_PHONE = "showActivityItemPhone";
    public static final String ACTIVITYITEM_CONFIG_CHECK_PHONE = "checkActivityItemPhone";
    public static final String ACTIVITYITEM_CONFIG_SHOW_DESC = "showActivityItemDesc";
    public static final String ACTIVITYITEM_CONFIG_CHECK_DESC = "checkActivityItemDesc";
    public static final String ACTIVITYITEM_CONFIG_SHOW_CITY = "showActivityItemCity";
    public static final String ACTIVITYITEM_CONFIG_CHECK_CITY = "checkActivityItemCity";
    public static final String ACTIVITYITEM_CONFIG_SHOW_CARNUM = "showActivityItemCarNum";
    public static final String ACTIVITYITEM_CONFIG_CHECK_CARNUM = "checkActivityItemCarNum";
    public static final String ACTIVITYITEM_CONFIG_SHOW_POSTNUM = "showActivityItemPostNum";
    public static final String ACTIVITYITEM_CONFIG_CHECK_POSTNUM = "checkActivityItemPostNum";
    public static final String ACTIVITYITEM_CONFIG_SHOW_ADDRESS = "showActivityItemAddress";
    public static final String ACTIVITYITEM_CONFIG_CHECK_ADDRESS = "checkActivityItemAddress";
    public static final String ACTIVITYITEM_CONFIG_SHOW_EMAIL = "showActivityItemEmail";
    public static final String ACTIVITYITEM_CONFIG_CHECK_EMAIL = "checkActivityItemEmail";
    public static final String ACTIVITYITEM_CONFIG_SHOW_MEMO1 = "showActivityItemMemo1";
    public static final String ACTIVITYITEM_CONFIG_CHECK_MEMO1 = "checkActivityItemMemo1";
    public static final String ACTIVITYITEM_CONFIG_SHOW_MEMO2 = "showActivityItemMemo2";
    public static final String ACTIVITYITEM_CONFIG_CHECK_MEMO2 = "checkActivityItemMemo2";
    public static final String ACTIVITYITEM_CONFIG_SHOW_MEMO3 = "showActivityItemMemo3";
    public static final String ACTIVITYITEM_CONFIG_CHECK_MEMO3 = "checkActivityItemMemo3";
    public static final String ACTIVITYITEM_CONFIG_SHOW_MEMO4 = "showActivityItemMemo4";
    public static final String ACTIVITYITEM_CONFIG_CHECK_MEMO4 = "checkActivityItemMemo4";
    public static final String ACTIVITYITEM_CONFIG_SHOW_MEMO5 = "showActivityItemMemo5";
    public static final String ACTIVITYITEM_CONFIG_CHECK_MEMO5 = "checkActivityItemMemo5";
    public static final String UPLOAD_KEEP_SOURCE = "uploadKeepSource";
    public static final int SCORE_TYPE_SIZE = 7;
    public static final String SCORE_CONFIG_SCORE_STATUS = "scoreStatus";
    public static final String SCORE_CONFIG_SCORE_NAME = "scoreName";
    public static final String SCORE_CONFIG_SCORE_REPLY_SCORE = "scoreReplyScore";
    public static final String SCORE_CONFIG_SCORE_TOPIC_SCORE = "scoreTopicScore";
    public static final String SCORE_CONFIG_REWARD_USED_SCORE = "rewardUsedScore";
    public static final String SCORE_CONFIG_BUILD_TOPIC_SCORE = "scoreBuildTopicGrade";
    public static final String SCORE_CONFIG_MEMBER_USED_SCORE = "memberUsedScore";
    public static final String SCORE_CONFIG_HIDDEN_USED_SCORE = "contentHiddenUsedScore";
    public static final String SCORE_CONFIG_SCORE_TOPIC_MINUS = "scoreTopicMinus";
    public static final String SCORE_CONFIG_SCORE_REPLY_MINUS = "scoreReplyMinus";
    public static final String SCORE_CONFIG_SCORE_BE_REPLY = "scoreBeReply";
    public static final String SCORE_CONFIG_SCORE_VOTE = "scoreVote";
    public static final String SETTING_PICK = "settingPick";
    public static final String REMOVE_PICK = "removePick";
    public static final String TOPIC_ACTION_DELETE = "batchDelete";
    public static final String TOPIC_ACTION_MOVE = "move";
    public static final String TOPIC_ACTION_PICK = "pick";
    public static final String TOPIC_ACTION_LOCK = "lock";
    public static final String POST_ACTION_GRADE = "grade";
    public static final String TOPIC_ACTION_BUILD = "build";
    public static final String TOPIC_ACTION_HIGHLIGHT = "highlight";
    public static final String TOPIC_ACTION_STICK = "stick";
    public static final String TOPIC_ACTION_CANCELSTICK = "cancelStick";
    public static final String GRADE_COUNT_OPTIONS = "gradeOptions";
    public static final String OPERATE_REASONS = "reasonsForOperate";
    public static final String DATE_OPTION = "dateOptions";
    public static final String LOCK_DATE_MAP = "lockDateMap";
    public static final String HIGHLIGHT_COLOR_OPTIONS = "highlightColorOptions";
    public static final int TOPIC_UNLOCK_STATUS = 0;
    public static final int TOPIC_LOCKED_STATUS = 1;
    public static final int ORIGINAL_VERSION = 1;
    public static final int TOPIC_NOT_BUILDED = 0;
    public static final int TOPIC_BUILDED = 1;
    public static final int TOPIC_UP = 0;
    public static final int TOPIC_DOWN = 1;
    public static final String EXPRITY_END_TIME = "2050-12-30";
    public static final String TOP_CONFIG_GLOBAL_MAX = "globalTopMax";
    public static final String TOP_CONFIG_FORUM_MAX = "forumTopMax";
    public static final int PLUGIN_INACTIVE = 0;
    public static final int PLUGIN_ACTIVE = 1;
    public static final String NOVIEWPOSTPAGE = "noViewPostPage";
    public static final String VIRTUALFLOOR = "virtualFloor";
    public static final String VIRTUALFLOORTIPS = "virtualFloorTips";
    public static final String PICK_CONFIG_NAME = "PickConfig";
    public static final String PICK_EXT_CONFIG_NAME = "ExtPickConfig";
    public static final String PICK_PRIORITY_CONFIG = "pickPriority";
    public static final int POST_IS_BEST_REPLY = 1;
    public static final int POST_NOT_BEST_REPLY = 1;
    public final static String TOPIC_TYPE_HOT = "hot";                  //帖子类型-最热贴
    public final static String TOPIC_TYPE_HOT_DAY = "hot_day";          //帖子类型-昨日最热帖
    public final static String TOPIC_TYPE_HOT_WEEK = "hot_week";        //帖子类型-本周最热帖
    public final static String TOPIC_TYPE_HOT_MONTH = "hot_month";      //帖子类型-本月最热帖
    public final static String TOPIC_TYPE_HOT_ALL = "hot_all";          //帖子类型-全部最热帖
    public final static String TOPIC_TYPE_NEW = "new";                  //帖子类型-最新帖
    public final static String TOPIC_TYPE_PICK = "pick";                //帖子类型-(昨日)精华帖
    public final static String TOPIC_TYPE_PICK_DAY = "pick_day";        //帖子类型-昨日精华帖
    public final static String TOPIC_TYPE_PICK_WEEK = "pick_week";      //帖子类型-本周精华帖
    public final static String TOPIC_TYPE_PICK_MONTH = "pick_month";    //帖子类型-本月精华帖
    public final static String TOPIC_TYPE_PICK_ALL = "pick_all";        //帖子类型-全部精华帖
    public final static String TOPIC_ORDER_CREATEAT = "createAt";       //按创建时间排序
    public final static String TOPIC_ORDER_LASTPOSTAT = "lastPostAt";   //按最后回复时间排序
    public final static String TOPIC_ORDER_REPLYCOUNT = "replyCount";   //按回复数排序
    public final static String TOPIC_ORDER_AWARD = "award";             //按悬赏分数排序
    public final static String POST_INTERVAL_TIME = "postIntervalTime"; //时间间隔
    public final static String NEED_EXAM_EMAIL = "needExamEmail"; //是否需要邮箱验证
    public final static String EXAM_EMAIL_DATE = "examEmailDate"; //如果用户注册时间早于该时间则不需要邮箱验证
    public final static String EXAM_EMAIL_URL = "examEmailUrl"; //邮箱验证地址
    public final static String CRASH_FORUM_ID = "crashForumId"; //回收站
    public final static String ADMIN_FORUM_ID = "adminForumId"; //版主俱乐部
    public final static String HOURS_FOR_MARK_NEW_TOPIC = "hoursForMarkNewTopic"; //显示新帖标识时间
    public final static String ACTIVITY_CITY_MAX_LENGTH = "activityCityMaxLength"; //活动城市最大字数
    public final static String ACTIVITY_AREA_MAX_LENGTH = "activityAreaMaxLength"; //活动地点最大字数
    public final static String ACTIVITY_TYPE_MAX_LENGTH = "activityTypeMaxLength"; //活动类型最大字数
    public final static String CAPTCHA_EXPIRY = "captchaExpiry";//验证码在过期时间前,超过发帖或者回帖次数,则需要显示验证码
    public final static String CAPTCHA_LIMIT = "captchaLimit";  //同上
    public final static String IP_VOTE_INTERVAL_SECONDS = "sameIpVoteIntervalInSeconds"; //同一IP时间间隔内投票限制

    public final static String PICTURE_SUBFIX = "_1024x1024";//图片后缀
    public final static String PICTURE_SUBFIX_IT = "_1024x1024it";//电脑网带水印图片后缀

    public final static String ALLOW_ATTACH = "allowAttach";    //允许上传附件

    public static final String MSG_FEED_URL = "msgFeedUrl"; //消息队列
    
    public static final String ATTACH_ROOT = "attach_root";
    
    /**汽车网特殊版块**/
    public static final long BRAND_PARENT_FID = 19; //品牌车型父版

    public static final int TYPE_WEB = 1;
    public static final int TYPE_WAP = 2;

    public static final String PICK_1 = "pickA";
    public static final String PICK_2 = "pickB";


    /**
     * 获取发帖配置列表
     *
     * @return
     */
    public static List<String> getTopicPostConfigList() {
        List<String> list = new ArrayList<String>();
        list.add(TOPIC_CONFIG_TITLE_MAX_LENGTH);
        list.add(TOPIC_CONFIG_CONTENT_MIN_LENGTH);
        list.add(TOPIC_CONFIG_CONTENT_MAX_LENGTH);
        list.add(TOPIC_CONFIG_UPLOAD_MAXNUM_PER_TIME);
        list.add(TOPIC_CONFIG_SHOW_CATEGORY);
        list.add(TOPIC_CONFIG_CHECK_CATEGORY);
        list.add(TOPIC_CONFIG_SHOW_VOTE_CREATEATMIN);
        list.add(TOPIC_CONFIG_CHECK_VOTE_CREATEATMIN);
        list.add(TOPIC_CONFIG_SHOW_VOTE_CONTRIBUTIONMIN);
        list.add(TOPIC_CONFIG_CHECK_VOTE_CONTRIBUTIONMIN);
        list.add(TOPIC_CONFIG_SHOW_ACTIVITY_CITY);
        list.add(TOPIC_CONFIG_CHECK_ACTIVITY_CITY);
        list.add(TOPIC_CONFIG_SHOW_ACTIVITY_AREA);
        list.add(TOPIC_CONFIG_CHECK_ACTIVITY_AREA);
        list.add(TOPIC_CONFIG_SHOW_ACTIVITY_TYPE);
        list.add(TOPIC_CONFIG_CHECK_ACTIVITY_TYPE);
        list.add(TOPIC_CONFIG_SHOW_ACTIVITY_COST);
        list.add(TOPIC_CONFIG_CHECK_ACTIVITY_COST);
        list.add(TOPIC_CONFIG_SHOW_ACTIVITY_SEX);
        list.add(TOPIC_CONFIG_CHECK_ACTIVITY_SEX);
        list.add(TOPIC_CONFIG_SHOW_TRADE_PRICE);
        list.add(TOPIC_CONFIG_CHECK_TRADE_PRICE);
        list.add(TOPIC_CONFIG_SHOW_TRADE_OLDNEW);
        list.add(TOPIC_CONFIG_CHECK_TRADE_OLDNEW);
        list.add(TOPIC_CONFIG_SHOW_TRADE_MODE);
        list.add(TOPIC_CONFIG_CHECK_TRADE_MODE);
        list.add(TOPIC_CONFIG_SHOW_TRADE_ADDRESS);
        list.add(TOPIC_CONFIG_CHECK_TRADE_ADDRESS);
        list.add(TOPIC_CONFIG_SHOW_TRADE_PHONE);
        list.add(TOPIC_CONFIG_CHECK_TRADE_PHONE);
        list.add(TOPIC_CONFIG_SHOW_TRADE_QQNUM);
        list.add(TOPIC_CONFIG_CHECK_TRADE_QQNUM);
        list.add(POST_INTERVAL_TIME);
        list.add(NEED_EXAM_EMAIL);
        list.add(EXAM_EMAIL_DATE);
        list.add(EXAM_EMAIL_URL);
        list.add(ACTIVITY_CITY_MAX_LENGTH);
        list.add(ACTIVITY_AREA_MAX_LENGTH);
        list.add(ACTIVITY_TYPE_MAX_LENGTH);
        list.add(CAPTCHA_EXPIRY);
        list.add(CAPTCHA_LIMIT);
        return list;
    }

    /**
     * 获取参与活动配置列表
     *
     * @return
     */
    public static List<String> getActivityItemConfigList() {
        List<String> list = new ArrayList<String>();
        list.add(ACTIVITYITEM_CONFIG_SHOW_USERNAME);
        list.add(ACTIVITYITEM_CONFIG_CHECK_USERNAME);
        list.add(ACTIVITYITEM_CONFIG_SHOW_PERSONS);
        list.add(ACTIVITYITEM_CONFIG_CHECK_PERSONS);
        list.add(ACTIVITYITEM_CONFIG_SHOW_USERNAME);
        list.add(ACTIVITYITEM_CONFIG_CHECK_USERNAME);
        list.add(ACTIVITYITEM_CONFIG_SHOW_PHONE);
        list.add(ACTIVITYITEM_CONFIG_CHECK_PHONE);
        list.add(ACTIVITYITEM_CONFIG_SHOW_DESC);
        list.add(ACTIVITYITEM_CONFIG_CHECK_DESC);
        list.add(ACTIVITYITEM_CONFIG_SHOW_CITY);
        list.add(ACTIVITYITEM_CONFIG_CHECK_CITY);
        list.add(ACTIVITYITEM_CONFIG_SHOW_CARNUM);
        list.add(ACTIVITYITEM_CONFIG_CHECK_CARNUM);
        list.add(ACTIVITYITEM_CONFIG_SHOW_POSTNUM);
        list.add(ACTIVITYITEM_CONFIG_CHECK_POSTNUM);
        list.add(ACTIVITYITEM_CONFIG_SHOW_ADDRESS);
        list.add(ACTIVITYITEM_CONFIG_CHECK_ADDRESS);
        list.add(ACTIVITYITEM_CONFIG_SHOW_EMAIL);
        list.add(ACTIVITYITEM_CONFIG_CHECK_EMAIL);
        list.add(ACTIVITYITEM_CONFIG_SHOW_MEMO1);
        list.add(ACTIVITYITEM_CONFIG_CHECK_MEMO1);
        list.add(ACTIVITYITEM_CONFIG_SHOW_MEMO2);
        list.add(ACTIVITYITEM_CONFIG_CHECK_MEMO2);
        list.add(ACTIVITYITEM_CONFIG_SHOW_MEMO3);
        list.add(ACTIVITYITEM_CONFIG_CHECK_MEMO3);
        list.add(ACTIVITYITEM_CONFIG_SHOW_MEMO4);
        list.add(ACTIVITYITEM_CONFIG_CHECK_MEMO4);
        list.add(ACTIVITYITEM_CONFIG_SHOW_MEMO5);
        list.add(ACTIVITYITEM_CONFIG_CHECK_MEMO5);
        return list;
    }

    public static List<String> getOtherConfigList() {
        List<String> list = new ArrayList<String>();
        list.add(FORUM_PAGE_SIZE);
        list.add(TOPIC_PAGE_SIZE);
        list.add(VIEW_POST_PAGE_SIZE);
        list.add(NOVIEWPOSTPAGE);
        list.add(VIRTUALFLOOR);
        list.add(VIRTUALFLOORTIPS);
        list.add(CRASH_FORUM_ID);
        list.add(ADMIN_FORUM_ID);
        list.add(HOURS_FOR_MARK_NEW_TOPIC);
        list.add(IP_VOTE_INTERVAL_SECONDS);
        return list;
    }
}

好不容易啊,同事们为了使代码质量达到最高,代码是敲了又删,删了又敲,累到手指几乎抽筋,按之前讨论
的方案进行编码,这种敬业精神,值得赞扬,要大大赞扬!
最后,就是写实现方法了,方法如下

import java.io.IOException;
import java.util.Properties;


/**
 * 
 * @author pc
 *
 */
public class Tpl {
	
	
	public static String TOPIC_URL = "";
	public static String FORUM_URL = "";
	public static String USER_URL = "";
	public static String POST_URL = "";
	public static String NOT_FOUND_URL = "";
	
	static {
		Properties urls = new Properties();
		try {
			urls.load(Tpl.class.getResourceAsStream("urltpl.properties"));
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		
		TOPIC_URL = urls.getProperty("TOPIC_URL");
		FORUM_URL = urls.getProperty("FORUM_URL");
		USER_URL = urls.getProperty("USER_URL");
		POST_URL = urls.getProperty("POST_URL");
		NOT_FOUND_URL = urls.getProperty("NOT_FOUND_URL");
	}	
}

时间真的很可恶,感觉才刚进会议室,时间马上就跑到六点了,意味着这一期的代码道场活动结束了。
当然,结束也得写总结的,有意义有收获的活动,不写下总结比一个饿了好几天的家伙,白白浪费一只烧鸡腿还可恶!
这期代码道场,同事们都很积极,讨论过程中都是经过快速思考的,没错,又是快速思考,这样真心会把脑子练得越转越快,不过,这是好事。
并且,在这期活动中,能将工作中的方法研究彻底,是非常值得的,这样对于日后的工作,也会起到一定的作用。
本期代码道场报道到此为止,欢迎同事们发表自己的想法,丰富这文档。