日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

代码规范(一)——java篇

發(fā)布時間:2023/12/15 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 代码规范(一)——java篇 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

為什么80%的碼農(nóng)都做不了架構(gòu)師?>>> ??

1.

Result?result=new?Result();

result.setCode(201);

result.setStr(re);

result.setMessage("獲取id成功");

建議:對常用的功能,可以:新增Constructor,把4code1行搞定。

Result?result=new?Result(code,?str,?msg);?

2.?

StringBuffer?stringBuffer=new?StringBuffer();

String[]?formatStr=snFormatStr.split(splitChar);

for(String?inStr:formatStr){

????//判斷以str開頭,不分大小寫

????if(inStr.matches("^[Ss][Tt][Rr].*")){

????????stringBuffer.append(processStr(inStr));

?

建議:StringBuffer改成StringBuilder。

倒數(shù)第二行用commons-lang3的,既能避免硬編碼,又避免了正則表達(dá)式。

StringUtils.startsWithIgnoreCase(CharSequence,?CharSequence)

3.?

private?String?processDate(String?str)?throws?Exception{

????String[]?strings=str.split(innerChar);

String?def="yyyyMMdd";

?

建議:凡是屬于?“無狀態(tài)的”?“通用的”功能,可以放在Util.java里。

如果確實需要硬編碼,放在Util.java里,讓它們只永遠(yuǎn)出現(xiàn)一次。

4.?

String?re="";

……

if(ar.length>1&&add!=""){

建議:org.apache.commons.lang3.StringUtils.EMPTY

重用常量,不要自己新創(chuàng)建。

5.?

import?org.slf4j.Logger;

import?org.slf4j.LoggerFactory;

?

if?(LOGGER.isDebugEnabled())?{

LOGGER.debug("Attempting?to?resolve?a?principal...");

建議:既然用了slf4j,里面就封裝了判斷log?level的功能。

LOGGER.isDebugEnabled()是多余的。

6.?

if?(attributes?==?null)?{

return?null;

……

if?(itemNo.length()!=3)?{

throw?new?RuntimeException("ItemCode?has?exceed?3?bits?!");

建議:

jdkthrow?new?IllegalArgumentException(...);

jdkthrow?new?IllegalStateException(...);

org.springframework.util.Assert.isTrue(boolean,?String)

org.springframework.util.Assert.state(boolean,?String)

7.?

if?(null?!=?sos)?{

????try?{

????????sos.close();

????}?catch?(IOException?e)?{

???? LOGGER.error("handleRequest?關(guān)閉流出現(xiàn)異常?!?",e);

????}

}

建議:

org.apache.commons.io.IOUtils.closeQuietly(OutputStream)

org.apache.commons.io.IOUtils.closeQuietly(Writer)

8.?

public?void?setApplicationContext(final?ApplicationContext?applicationContext)?{

????super.setApplicationContext(applicationContext);

????this.applicationContext?=?applicationContext;

}

建議:既然父類已經(jīng)有了ApplicationContext,子類的就是無用的,可以刪除。

?9.?

public?class?ImageVaditeAuthenticationViaFormAction

??if?(this.credentialsBinder?!=?null?&&?this.credentialsBinder.supports(credentials.getClass()))?{

????this.credentialsBinder.bind(request,?credentials);

??}

建議:Web層里,傳遞給Service層的東東,不應(yīng)該有Servlet?API

10.?

UserCacheVO?vo?=?new?UserCacheVO();

vo.setLoginIP(request.getRemoteAddr());

vo.setLoginTime(DateUtil.DateTimeToString(new?Date()));

vo.setResourceNo(resourceNo);

vo.setUserName(loginId);

vo.setUserSymbol(userSymbol);

建議:做成UserCacheVO?vo?=?new?UserCacheVO(w,x,y,z);

?

有人說:對于多個參數(shù)是相同類型,比如都是string,采用構(gòu)造方法構(gòu)造比較容易出現(xiàn)調(diào)用時

參數(shù)錯位的錯誤,而且也不太容易發(fā)現(xiàn)

?

解決方式:這樣定義Constructor,每5個參數(shù)放在一行,

任何IDE的排版(都是一行有80/120/160個字符),都會保持整齊隊形了。

11.??

建議:合并。每個package里,有幾個幾十個類是正常的。

com.gy.prvg.acl.constant里的多個常量類,合并為一個。Enum,也做在常量類里面。

?

2014/?09/?22增補(bǔ))目前公司里還有個類似的狀況,工程師們喜歡狂建項目——

只有幾個類的十幾個類的,都能做個單獨(dú)的項目出來。

建議:一個工程有了2000--4000個類,可以考慮拆分。幾百個類的,先保持在一起。

好處:便于開發(fā),便于查找,便于檢錯,便于調(diào)試,便于維護(hù),便于測試。

?12.?

public?static?final?List<AccountType>?AllTypes()?{

List<AccountType>?types?=?new?ArrayList<AccountType>();

for?(AccountType?accountType?:?AccountType.values())?{

types.add(accountType);

}

return?types;

}

建議:List<TimeUnit>?list?=?java.util.Arrays.asList(TimeUnit.values());?一句話搞定。

?13.?

@Override

public?String?toString()?{

Map<String,?Object>?map?=?new?HashMap<String,?Object>();

map.put("loginId",?loginId);

map.put("resourceNo",?resourceNo);

map.put("deptNo",?deptNo);

map.put("userName",?userName);

map.put("userCode",?userCode);

map.put("cardId",?cardId);

map.put("phone",?phone);

map.put("email",?email);

map.put("status",?status);

map.put("roleType",?roleType);

map.put("corpName",?getCorpName());

map.put("deptNo",?getDeptName());

return?JSON.toJSONString(map);

?

建議:

可以用JSON.toJSONString(this);一句搞定。或者加上@JsonIgnore能屏蔽些field

json格式,全部項目應(yīng)該用統(tǒng)一的jar。推薦:fastjson。

14.?

import?org.apache.log4j.FileAppender;

import?org.apache.log4j.Layout;

import?org.apache.log4j.helpers.CountingQuietWriter;

import?org.apache.log4j.helpers.LogLog;

import?org.apache.log4j.helpers.OptionConverter;

import?org.apache.log4j.spi.LoggingEvent;

?

public?class?AclLogFileAppender?extends?FileAppender

?

建議:org.apache.log4j.RollingFileAppender應(yīng)該足夠用了,不用自建class

15.?

public?enum?RoleType?{

??PlatAdmin("平臺管理員"),

??CorpAdmin("公司管理員"),

??Normal("普通角色");

?

if?("財務(wù)視圖".equals(view.getViewName()))?{

view.setViewType("Finance");

}

if?("管理視圖".equals(view.getViewName()))?{

view.setViewType("Manage");

}

if?("參數(shù)視圖".equals(view.getViewName()))?{

view.setViewType("Param");

建議:用ASCII表里的英文字母或數(shù)字。

?16.?

public?interface?ILoginService?{

void?loadPrivilegeItemList(String?resourceNo,?String?loginId,?HttpServletRequest?request);

??HttpResult?logon(HttpServletRequest?request);

?

建議:

團(tuán)長能夠指揮士兵,士兵不能指揮團(tuán)長。

上層能調(diào)用下層,下層不能調(diào)用上層。

Service層里,不應(yīng)該有Webapi。

?17.?

if?(data.get("uri").indexOf(action.getItemContent())>=0)?{

?

建議:java.lang.String.contains(CharSequence)

?

?18.?

int?len?=?roleCode.length()?-?3;

int?maxNo?=?Integer.valueOf(roleCode.substring(len));

String?leafNo?=?String.valueOf(maxNo?+?1);

leafNo?=?(leafNo.length()?==?3)???leafNo?:?(leafNo.length()?==?2???"0"?+?leafNo?:?"00"?+?leafNo);

code?=?roleCode.substring(0,?len)?+?leafNo;

?

stringBuilder.append(LoUtils.fill0InStr(calcDebitCount+"",?3,?0));

?

建議:org.apache.commons.lang3

StringUtils.?leftPad(java.lang.String?str,?int?size,?char?padChar)

StringUtils.?leftPad(java.lang.String?str,?int?size,?java.lang.String?padStr)

?

建議:

calcDebitCount+"",這種用法在不同的jdk和不同的編程語言之間都可能有毛病。例如:

assertEquals("1.23456789E7",?12345678.90?+?"");

assertEquals("1.23456789E7",?Double.toString(12345678.90));

assertEquals("1.23456789E7",?String?.valueOf(12345678.90));

3個都變味了。所以,使用這些功能之前,要確保正確性。

19.?

try?{

??……

}?catch?(SystemException?se){

LOGGER.error("?Finding?listCorporation?is?error?!",se);

throw?new?SystemException(se.getErrorCode(),?se.getMessage());

}?catch?(Exception?e)?{

LOGGER.error("?Finding?listCorporation?is?error?!",e);

throw?new?SystemException(ErrorCode.ERROR_9004,"查詢公司出現(xiàn)異常!",?e);

?

每個項目里的每層的每個類里,都有這些catch,有實際意義嗎?

白白的增加了幾千幾萬行code。

建議:絕大多數(shù)情況,不需要catch。public?void?someMethod()?throws?Exception是最簡潔的。

只是在必要之處,例如:返回給頁面之前,才做catch。

?

附:javachecked?exception是個設(shè)計錯誤。

按照現(xiàn)代的程序理論:在任何地方,catch都是可有可無的,不應(yīng)該強(qiáng)迫搞catch。

Java5以前的Runnable??run(),就是強(qiáng)迫catch?{?},讓開發(fā)者感到臃腫。

Java5+CallableV?call()??throws?Exception;?catch?{?}?就是可有可無的,很清爽。

?20.?

userRole.setRoleName(URLDecoder.decode(userRole.getRoleName(),?"UTF-8"));

建議:

org.apache.commons.lang3.CharEncoding.UTF_8

凡是可能有編碼毛病之處,用POST方式,

org.springframework.web.filter.CharacterEncodingFilter當(dāng)做過濾器,就實現(xiàn)了統(tǒng)管,

就不用在多處搞多個URLDecoder.decode()了。

21.?

int?index?=?StringUtil.isEmpty(pageLeafCode)???0?:?pageLeafCode.indexOf("[");

if?(index?>?0)?{

pageLeafCode?=?pageLeafCode.substring(index?+?1,pageLeafCode.length()?-?1);

建議:org.apache.commons.lang3.StringUtils.substringAfter(String,?String)

22.?

public?String?toString()?{

return?"Leaf?[leafId="?+?leafId?+?",?leafName="?+?leafName

+?",?leafCode="?+?leafCode?+?",?nodeCode="?+?nodeCode

+?",?leafType="?+?leafType?+?",?leafContent="?+?leafContent

+?",?description="?+?description?+?",?subSystemId="

+?subSystemId?+?"]";

建議:在基類里定義toString()一次就行了。

org.apache.commons.lang3.builder.ToStringBuilder.reflectionToString(

this,?ToStringStyle.SHORT_PREFIX_STYLE);

23.?

Map<String,String>?data?=?new?HashMap<>();

data.put("uri",?request.getRequestURI());

data.put("loginId",?SSOConstant.getLoginId(request));

data.put("resourceNo",?SSOConstant.getResourceNo(request));

?

建議:凡是常用的hardcode,都做成靜態(tài)常量。

24.?

CacheLoadUtil.getRelationMap().put(roleCode,?map);

建議:緩存的東東,不應(yīng)該在static?map的里面,而應(yīng)該在obj?map里面。

?25.?

public?static?String?objectToString(Object?obj){

return?obj.toString();

建議:刪除這個函數(shù)。

?26.?

public?static?String?replaceSpecialStr(Object?value){

if(null?!=?value?&&?!"".equals(value)){

return?value.toString().replaceAll("'",?"’").trim();

建議:

org.apache.commons.lang3.StringUtils.isNotEmpty(CharSequence)

java.lang.String.replaceAll(String,?String)?適合于:正則表達(dá)式。

java.lang.String.replace(CharSequence,?CharSequence)?更適合此處。

?27.?

public?static?String?nullConvert(String?value){

return?null==value?"":value;

建議:該報錯的時候,就報錯,用org.springframework.util.Assert.notNull(Object)

如果確實有用,用:org.apache.commons.lang3.StringUtils.defaultString(String)

28.?

void?modifyAuditStatus(Long[]?ids,?String?operType,?Map<String,String>?data)

建議:Long[]?ids改成:List<Long>,面向?qū)ο缶幊?#xff0c;少用array,多用List

?29.?

Map<String,?List<Role>>?map?=?new?HashMap<String,List<Role>>();

map.put("leftRoles",?leftRoles);

map.put("rightRoles",?rightRoles);

建議:既然只放兩個,可以用:org.apache.commons.lang3.tuple.Pair.of(left,?right)

?30.?

for?(String?loginId?:?addUsers)?{

UserRole?ur?=?new?UserRole();

ur.setCreated(now);

ur.setCreatedBy(operator);

ur.setIsActive('0');

ur.setLoginId(loginId);

ur.setResourceNo(resourceNo);

ur.setRoleCode(roleCode);

ur.setStatus("1");

ur.setUpdated(now);

ur.setUpdatedBy(operator);

建議:

ur.setIsActive('0');?ur.setStatus("1");?把類似的風(fēng)格做成兩樣?xùn)|東了,建議都用int風(fēng)格。

建議:

用多參數(shù)的Constructor,把10行變成1行。

有人對此提出疑問:把10個參數(shù)放在Constructor里,太多了……

他說的,適合于啥情況呢?

OO設(shè)計,有幾條重要原則:

A)迪米特法則——“最少知識原則”?!?不要和陌生人說話”。

B)強(qiáng)內(nèi)聚,弱耦合。即:關(guān)系越少越好。


UserRole,里面所有的屬性都是“同類的傻傻的boolean/int/String/…”,是很簡單的容器,

不屬于OO設(shè)計范圍,就算Constructor里有200+個參數(shù),也是正確的。

31.?

if?(StringUtil.isNotEmpty(viewVO.getViewName()))?{

viewVO.setViewName("%"?+?viewVO.getViewName()?+?"%");

where.append("?and?viewName?LIKE?:viewName?");

}

if?(StringUtil.isNotEmpty(viewVO.getViewType()))?{

viewVO.setViewType("%"?+?viewVO.getViewType()?+?"%");

where.append("?and?viewType?LIKE?:viewType?");

}

if?(StringUtil.isNotEmpty(viewVO.getCreatedBy()))?{

viewVO.setCreatedBy("%"?+?viewVO.getCreatedBy()?+?"%");

where.append("?and?createdBy?LIKE?:createdBy?");

}

建議:

"%"改成'%'

public?static?final?char?SQL_WILDCARD?=?'%';

把常用的拼接功能做成個靜態(tài)函數(shù):

public?static?void?wildcardSqlWord(String?str)?{

????return?Util.SQL_WILDCARD?+?str?+?Util.SQL_WILDCARD;

}

32.?

//?轉(zhuǎn)換用戶狀態(tài)

switch?(u.getStatus())?{

case?"0":

u.setStatus("New");//?新建

break;

case?"1":

u.setStatus("Normal");//?正常

break;

case?"2":

u.setStatus("Forbidden");//?禁用

break;

default:

u.setStatus("Illegal");//?非法

break;

//?轉(zhuǎn)換參數(shù)狀態(tài)

switch?(sys.getStatus())?{

case?"0":

sys.setStatus("Normal");//?正常

break;

case?"1":

sys.setStatus("Forbidden");//?禁止

break;

default:

sys.setStatus("Illegal");//?非法

break;

}

//?操作級別轉(zhuǎn)換

switch?(sys.getOperationGrade())?{

case?"0":

sys.setOperationGrade("");

break;

case?"1":

sys.setOperationGrade("查詢");

break;

case?"2":

sys.setOperationGrade("修改");

break;

case?"3":

sys.setOperationGrade("刪除");

break;

case?"4":

sys.setOperationGrade("全部");

break;

default:

sys.setOperationGrade("Illegal");

break;


建議:

default后面,不要寫break

switch(x)里,盡量不用String,而用enum

如果確實需要switch(數(shù)字),就在enum里加入成員常量。例如:

public?enum?CmdCategory?implements?MyEnum?{

??/**

???*?<code>dummy?=?0;</code>

???*/

??dummy(0,?0),

??/**

???*?統(tǒng)一官網(wǎng)

???*/

??official(1,?10000),

??/**

???*?個人系統(tǒng)

???*/

??person(2,?20000),

??/**

???*?企業(yè)系統(tǒng)

???*/

??company(3,?30000),

33.?

private?CacheLoadUtil()?{

super();

}

public?class?StringUtil?{

private?StringUtil(){

super();

};

建議:

public?Util()?{?//?這里用了public,是為了覆蓋率的完美。

????throw?new?java.lang?.NoSuchMethodError();

}

34.?

String?sql?=?"?select?l.*?from?T_PVG_LEAF?l?join?T_PVG_ROLE_LEAF?rl?on?l.leafCode

建議:應(yīng)該回避l。

l長得很像數(shù)字1i的大寫字母,java的語言規(guī)范中都回避,long?33L表示。

?35.?

if?(obj?==?null)?{

result?=?"PO00000000";

}else?{

result?=?LeafRelation.nextBriefCode(String.valueOf(obj));

}

建議:如果兩個長度都中等,可以合并為一行,用java的三元運(yùn)算符:

result?=?(null?==?obj)???x?:?y

?36.?

public?class?CacheLoadUtil?{

/**

?*?<p>以企業(yè)資源號為key?公司對象為value</p>

?*/

private?static?final?Map<String,?Corporation>?CORPS?=?new?HashMap<String,?Corporation>();

/**

?*?<p>以部門編號為key?部門對象為value</p>

?*/

private?static?final?Map<String,?Department>?DEPTS?=?new?HashMap<String,Department>();

/**

?*?<p>以角色代碼為key?角色對象為value</p>

?*/

private?static?final?Map<String,?Role>?ROLES?=?new?HashMap<String,Role>();

建議:緩存,不要搞static?Map,用實例化的對象,最好用框架EHCache、Memcache……

?37.?推薦的Java測試組件

頁面層:HtmlUnit。普通的頁面和jsjQuery等),它都能搞定。

業(yè)務(wù)層:JUnit?+?Mockito/EasyMock

持久層:JUnit?+?HsqlDB/H2/Derby?+?Spring?Context

測試結(jié)果報表:Cobertura?/?JaCoCo

構(gòu)建工具:Maven?/?Ant。在命令行上(不依賴于IDE),用一條的指令搞定全部構(gòu)建的東東。

?

38.?自動化測試的重要信息

(1)?想要在程序這條路上走幾十年,搞自動化測試是最正確的路線。

(2)?參考?張林?的http://qc.gyist.com/Wiki.jsp?page=SoftwareTesting

(3)?參考第37節(jié)

(5)?假設(shè)某版本app900bug,有了“自動化測試”,能快速檢查出來820個,

30個被測試組檢查出來,10個在UAT環(huán)境出現(xiàn),30個在生產(chǎn)環(huán)境出現(xiàn),

還剩10個永遠(yuǎn)也不會發(fā)現(xiàn)。這是比較理想的情況。

?

假如沒有“自動化測試”,820個就要分擔(dān)給“測試組”、“UAT”和“生產(chǎn)環(huán)境”來暴露了。

這會極大的增加程序員返工的次數(shù)和溝通的次數(shù)。我們絕不想要這種狀況。

這會極大的增加公司的經(jīng)營成本。老板絕不想要這種狀況!!!

原則:軟件bug,越早發(fā)現(xiàn),成本越低。

39.?有人問:為什么推薦JUnit4?為什么拋棄TestNG

JUnit,簡單易用,最好了。主流版本是:3.8.x4.xJUnit4,約束更少,功能更強(qiáng)大。

Testng,本身過度復(fù)雜,在各大IDE上的版本都不同,

本身也有內(nèi)存泄露等毛病,新版本久不更新,應(yīng)該拋棄。

?40.?

public?static?final?Map<String,?Corporation>?getCorps()?throws?SystemException?{

if?(CORPS.isEmpty())?{

List<Corporation>?cps?=?SpringBeanUtil.getBean(AclConstants.CORP_SERVICE,?CorporationServiceImpl.class).queryCorporationAll();

…………

?

public?class?SpringBeanUtil?implements?ApplicationContextAware?{

private?static?ApplicationContext?ctx;

private?SpringBeanUtil()?{

super();

}

public?static?<T>?T?getBean(String?id,?Class<T>?clazz)?{

if?(ctx?==?null)?{

throw?new?NullPointerException("ApplicationContext?is?null");

}

return?(T)?ctx.getBean(id);

}

@Override

public?void?setApplicationContext(ApplicationContext?applicationContext)

throws?BeansException?{

ctx?=?applicationContext;

}

}

建議:刪除Constructor,或者參考第33節(jié)

?

建議:扔掉getBean函數(shù),用:

org.springframework.beans.factory.BeanFactory.getBean(String,?Class<T>)?

BeanFactory?ApplicationContext的父接口。

?

建議:Spring搞的都是OO,我們用Spring也應(yīng)該遵循OO。OO和靜態(tài)的東東是相排斥的。

Springctx做成靜態(tài)的引用,會有多種缺陷。例如:

A)潛在的內(nèi)存泄露。

B)清理對象的時候,總是不能清理static?ctx,這是災(zāi)難性的錯誤。

?

建議:getBean可能是作者的使用目的,是以static的方式訪問的。

可它的初始化,竟然是以實例的方式搞的!!!

@Override

public?void?setApplicationContext

?

建議:經(jīng)過上面4條建議,可以刪除掉SpringBeanUtil這個可憐的類了。

?41.?

public?String?resetPassword(String?loginId,?String?resourceNo,

Map<String,String>?data)?throws?SystemException?{

String?message?=?"";

String?userSymbol?=?CacheCommonUtil.getUserSymbol(loginId,?resourceNo);

User?user?=?CacheLoadUtil.getUsers().get(userSymbol);

SystemParam?dPassword?=?systemDao.selectSystemParamByKey(SystemParamConstants.PARAM_PWD_GROUP,user.getResourceNo());

try?{

if?(dPassword==null||StringUtil.isEmpty(dPassword.getParamValue()))?{//若無公司的默認(rèn)密碼,則默認(rèn)為登錄名

user.setPassword(CoderUtils.toHex(CoderUtils.encryptMD5(user.getLoginId())));

}else?{

user.setPassword(CoderUtils.toHex(CoderUtils.encryptMD5(dPassword.getParamValue())));

}

user.setUpdated(new?Date());

user.setUpdatedBy(data.get("loginId"));

userDao.update(user);

CacheLoadUtil.getUsers().put(userSymbol,?user);

//?增加操作日志

SystemLogUtil.addSystemLog(data,?FuncType.SYSTEM_SETTING,AclConstants.SYS_RESET_PASSWORD,?"密碼******",?"密碼******");

message?=?"success";

建議:第4行,凡是從緩存取數(shù)據(jù)的操作,應(yīng)該建立個成員變量(member?variable),

Spring的標(biāo)準(zhǔn)set方式注入cacheManager對象,堅決拋棄靜態(tài)功能。

?

建議:CoderUtils,詞匯Coder明顯意義錯誤。

可以改成CodecUtils,標(biāo)準(zhǔn)依據(jù):org.apache.commons.codec.*

?

建議:加密用:org.apache.commons.codec.digest.DigestUtils?.md5Hex(byte[]?data)

?

建議:倒數(shù)第3行,密碼,不應(yīng)該以明文方式出現(xiàn)在log里。

42.?

public?class?SystemServiceImpl?implements?ISystemService?{

private?static?final?Logger?LOGGER?=?LoggerFactory.getLogger(SystemServiceImpl.class);

建議:實例范圍的類,就用實例范圍的Logger。

private?Logger?LOGGER?=?LoggerFactory.getLogger(getClass());

?43.?自動化測試,包含了哪幾塊?

A)自動化單元測試。專門測試某層級的某類。這是最細(xì)粒度的。

B)自動化集成測試。

例如:某Web?ServiceTC,順便也把它的下面幾層(Service層、Dao層)都測試到了。

C)冒煙測試

?44.?自動化測試,有哪些原則?

這里,簡稱為TCTestCase)。

ATC_Y不會依賴于TC_XTC_Z。

B)跑任何的TC,只用1條指令。注意:只是1條,不是2條或N條。

1條,里面包含了啟動相關(guān)的資源(DBWeb?Server……)

C)在developerA電腦里能跑的300TC,移動到developerB電腦里的任何目錄里,

也要跑對。像”C:/MyTempDir”之類的absolute?path,絕不應(yīng)該出現(xiàn)。

D)不依賴于外部資源和網(wǎng)絡(luò)。

例如:用www.ip138.com得到本機(jī)的外網(wǎng)ip。如果那家網(wǎng)站垮了或被封了,就會影響TC。

例如:利用了公司內(nèi)網(wǎng)里某臺DB和某些WebService。如果那些停了,就會影響TC。

例如:源碼里出現(xiàn)了多次192.168.1.xxx就是錯誤的。

既然“不依賴于外部資源”了,那就更加不會依賴于“虛擬機(jī)”了。

有網(wǎng)絡(luò)的時候能跑對;拔掉網(wǎng)線的接頭,也能跑對。

F)不應(yīng)該彈出UI

如果必須要彈出UI才能檢驗正確性,也行,還必須在彈出后3秒再自動的關(guān)閉它。

然后接著繼續(xù)跑后面的TC

45.?TC需要的外部資源,如何模擬?

AMockito?/?EasyMock

用于模擬:接口,抽象類,普通類(非final的)

待續(xù)。

?

BEmbedded?Tomcat

用于模擬Web?SiteWeb?Service。

?

@BeforeClass

public?static?void?setUpClass()?throws?Exception?{

????tomcat?=?new?Tomcat();

????tomcat.setBaseDir(tomcat4junit);

????tomcat.addWebapp(new?File("web").getCanonicalPath());

????tomcat.setPort(PORT);

????tomcat.start();

}

@AfterClass

public?static?void?tearDownClass()?throws?Exception?{

????tomcat.stop();

????tomcat.destroy();

}

?

?

CDbUnit?+?Derby?/?HsqlDB?/?H2??instead?of??MySql?/?Oracle?/?SqlServer

經(jīng)典用法:在每次TC之前(@Before里),清空table,并且導(dǎo)入某xml文件到table里:

DatabaseOperation.CLEAN_INSERT.execute(dbConn2,?dataSet2);

?46.?

private?String?translateContract(String?contract,Declare?declare)?throws?Exception?{

?? Pattern?pattern?=?Pattern.compile("[$]\\{[^}]*\\}");

?? Matcher?matcher?=?pattern.matcher(contract);

?? StringBuffer?sb?=?new?StringBuffer();

?? While(??)

?

建議:

為了避免硬編碼,為了減少復(fù)雜性,盡量不要自己搞正則表達(dá)式。

org.springframework.beans.factory.config.PlaceholderConfigurerSupport的常量。

final?String[]?arr?=?StringUtils.substringsBetween("abc${123}efg${678}www",

????????DEFAULT_PLACEHOLDER_PREFIX,?DEFAULT_PLACEHOLDER_SUFFIX);

assertEquals("123",?arr[0]);

assertEquals("678",?arr[1]);

至于替換的功能,參考:spring??PropertyPlaceholderConfigurer

?47.?

contract.setSerialno(UUID.randomUUID().toString().replaceAll("-",?""));

建議:

public?String?replaceAll(String?regex,?String?replacement)

性能差些,是針對正則表達(dá)式搞替換的,而不是針對普通String。

?

這里,應(yīng)該用

public?String?replace(CharSequence?target,?CharSequence?replacement)

?48.?

if(type.equals(Workflow.TASK_CLAIM)){

if(role.equals("S")){

appStatus?=?"1";

}else?if(role.equals("M1")){

dataStatus?=?"2";

appStatus?=?"4";

}else?if(role.equals("M2")){

dataStatus?=?"2";

appStatus?=?"7";

}else?if(role.equals("P")){

appStatus?=?"10";

}else?if(role.equals("PHK")){

appStatus?=?"13";

}else?if(role.equals("PHTQR")){

appStatus?=?"15";

}else?if(role.equals("PGZ")){

appStatus?=?"17";

}

}else?if(type.equals(Workflow.TASK_COMPLETE)){

if(role.equals("S")){

if(passValue){

dataStatus?=?"2";

appStatus?=?"3";

}else{

dataStatus?=?"0";

appStatus?=?"0";

}

}else?if(role.equals("M1")){

if(passValue){

dataStatus?=?"2";

appStatus?=?"6";

建議:

A)用Java7switch(?str?)功能。

B)凡是常量,都應(yīng)該以String[]/String[][]/enum的形式,做在Util里。

C)每個常量的意義,用本地語言(中文)盡量詳細(xì)解釋。例如:

/**

?*?很常用的表示狀態(tài)的標(biāo)志位。

*?只用一個byte/char表示狀態(tài),讓解析更快。

?*/

?public?static?final?String?OK?=?String.valueOf(1);

?49.?如何對程序打分(0--100)?

?

A)勉強(qiáng)跑起來的,能用的,通過測試組的檢查。030

中國的99+%的公司里的大部分程序員,做到了這條就停止了。

?

B)自動化審核通過的(PMDFindBugsCheckStyle……),符合常見模式的。010

用自動化工具審核,然后修改。這條容易。

JavaEE里,通用的東東多,我們大多數(shù)都只做增刪改查,需要的模式很少。這條也容易。

?

C)主要的功能,被自動化測試覆蓋了的。0--15

例如:某項目有WebService層,Service層,Dao層。

由于時間緊,僅僅只搞了WebService層的自動化測試,

雖然不足,但基本上覆蓋了主要的功能。這也行的。

?

D95+%的代碼行,被自動化測試覆蓋了的。015

聽說,中國阿里系的軟件項目,能達(dá)到這個程度。

?

E)工程總體代碼行數(shù),很少較少的。0--20

這個需要很多年的細(xì)致的知識積累,軟件行業(yè)里,很少有人能達(dá)到。

例如:很多功能,在jdk/apache?commons/spring里都有,我們簡單的調(diào)用就行了。

?

轉(zhuǎn)載于:https://my.oschina.net/xiaoyuHe/blog/417364

總結(jié)

以上是生活随笔為你收集整理的代码规范(一)——java篇的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

国产精品18久久久久久久网站 | 欧美日韩免费观看一区二区三区 | 综合网天天色 | 国产资源免费在线观看 | 男女日麻批 | 日本精品一区二区三区在线观看 | 亚洲精品美女久久久久 | 日本久久免费电影 | 九色在线 | 久久久久久久国产精品 | av线上免费观看 | 亚洲精品资源在线 | 五月婷婷毛片 | 一区二区在线电影 | free,性欧美 九九交易行官网 | 国产精品18久久久久久久久 | 日韩最新中文字幕 | 激情五月五月婷婷 | 国产色婷婷精品综合在线手机播放 | 四虎欧美 | 国产精品va最新国产精品视频 | 色在线高清 | 成人久久视频 | 国产成人在线观看 | 久久午夜鲁丝片 | 丝袜网站在线观看 | 日韩在线首页 | 岛国精品一区二区 | 国产黄在线看 | 欧美精品免费在线 | 亚洲欧美日韩精品一区二区 | www.日本色 | 亚洲一区二区三区四区在线视频 | 奇米777777| 免费日韩 | 久草在线资源免费 | 91麻豆精品国产午夜天堂 | 国产精品字幕 | 毛片区 | 一区在线播放 | 超碰97人人爱 | 日本激情视频中文字幕 | 91手机电影| 欧美精品九九99久久 | 国产一区成人在线 | 亚洲国产精品成人va在线观看 | 国产手机视频在线观看 | 日韩中文在线观看 | 97在线视| 国产精品18久久久久久久网站 | 国产成人久久精品 | 久久成人福利 | 亚洲电影网站 | 91正在播放| 婷婷激情小说网 | 九九亚洲视频 | 中文字幕一区二区三区久久蜜桃 | 成人四虎 | 免费观看的av网站 | 精品免费在线视频 | 欧美午夜激情网 | 日韩av电影中文字幕在线观看 | 五月婷丁香 | 国产 视频 久久 | 最新色视频 | 久久久久久久免费看 | 精品国产免费久久 | 免费a视频在线观看 | 国产一级二级三级视频 | 91电影福利| 成人毛片一区 | 综合久久2023 | 色a综合 | 久色婷婷 | 国产精品一区二区在线观看免费 | 国产成人精品一区二区三区网站观看 | 天天操天天色天天射 | 99精品国产成人一区二区 | 免费在线黄| 色婷婷久久一区二区 | 国产99久久九九精品免费 | www.人人草 | 二区在线播放 | 激情综合六月 | 91精品999| 99r在线播放 | 久久午夜剧场 | 成人av手机在线 | 超碰在线99 | 国产精品黄色 | av网站免费看 | 国产不卡高清 | 国产裸体无遮挡 | 国产一级片一区二区三区 | 久草久热 | 亚洲国产剧情 | 欧美极品xxxxx | 国产中文字幕视频在线观看 | 亚洲一级免费电影 | 欧美一区在线看 | 日韩欧美在线中文字幕 | 99久久精品免费看国产四区 | 99视频| 99草在线视频 | 香蕉在线影院 | avwww在线| 又湿又紧又大又爽a视频国产 | 91福利免费 | 99久国产| 九九九九精品九九九九 | 香蕉久久久久 | www黄色av| 欧美日韩中文在线 | a天堂中文在线 | 在线三级中文 | 国产精品成人品 | 国产高清视频免费观看 | 五月开心六月伊人色婷婷 | 免费黄在线观看 | 亚洲综合色播 | 久久激情五月激情 | 亚洲男模gay裸体gay | 国产精品美女久久久久久久 | 日韩mv欧美mv国产精品 | 国内精品久久久久影院一蜜桃 | 成片视频免费观看 | 6080yy午夜一二三区久久 | 亚洲精品国偷自产在线99热 | av在线免费观看不卡 | 在线视频18在线视频4k | 国产日韩在线观看一区 | 日韩精品你懂的 | 亚洲片在线观看 | 国产女v资源在线观看 | 97色狠狠 | 韩国av免费在线观看 | 黄色毛片大全 | 久久亚洲私人国产精品va | 在线 视频 一区二区 | 精品一区二区在线观看 | 日韩激情视频 | 日韩高清在线看 | 日本在线观看黄色 | 日日夜夜网| 麻豆视频免费看 | 8x成人在线 | 中文字幕资源网 国产 | 欧美色综合天天久久综合精品 | 午夜久久福利影院 | 免费黄在线看 | 欧美人牲 | 日韩精品在线免费观看 | 99视频网站 | 成人a在线观看高清电影 | 在线视频99 | 成人黄色毛片视频 | 久久久午夜精品福利内容 | 91免费网站在线观看 | 国产麻豆精品免费视频 | 天天插综合 | 天天干,天天射,天天操,天天摸 | 伊人久操 | 在线观看国产福利片 | 视频二区在线 | 中文字幕资源站 | 精品久久久免费视频 | 日韩免费高清 | 狠狠躁日日躁狂躁夜夜躁 | 日b黄色片 | 久热这里有精品 | 国产区在线看 | 婷婷综合电影 | 欧美在线aaa | 91精品久久久久久综合乱菊 | 国产精品1区2区3区 久久免费视频7 | 精品亚洲一区二区三区 | 国产一卡久久电影永久 | 射综合网 | 久久网址 | 日本中文一区二区 | 一区二区三区福利 | 91视频首页 | 日韩欧美高清一区二区 | 精品久久久久久电影 | 国产精品正在播放 | 中文字幕在线观看1 | 日韩在线观看免费 | 色综合久久88色综合天天免费 | 国产一级免费电影 | 黄色国产区| 中文字幕刺激在线 | 国产裸体永久免费视频网站 | 色偷偷中文字幕 | 亚洲天堂网在线视频观看 | 欧美精品少妇xxxxx喷水 | 国产 亚洲 欧美 在线 | 操操操影院 | 日韩三级视频 | 在线国产片 | 亚洲理论片 | 日日夜日日干 | 91精品国产自产在线观看永久 | 国产又粗又硬又爽的视频 | 国产九九在线 | 日韩www在线 | 日本黄区免费视频观看 | 91色在线观看视频 | 国产v亚洲v | 午夜久久久久久久久久久 | 国产不卡视频在线 | 精一区二区 | 国产成人精品久久二区二区 | 久久精品国产亚洲a | 国产丝袜网站 | 国产精品久久久久久久久搜平片 | 2018亚洲男人天堂 | 久草视频在线免费 | 亚洲一区二区三区精品在线观看 | 在线观看免费一级片 | 97精品国产97久久久久久 | 国产理论免费 | 国产高清视频色在线www | 91完整版 | 亚洲精品视频中文字幕 | 亚洲精品乱码久久久久久写真 | 欧美日韩中字 | 激情导航 | 欧美一区二区在线 | 欧美日本日韩aⅴ在线视频 插插插色综合 | 91成人黄色| 黄色av成人在线 | 国产免费中文字幕 | 日日碰狠狠添天天爽超碰97久久 | 久久视频在线免费观看 | 日本中文字幕在线免费观看 | 天天爽夜夜爽人人爽曰av | 又爽又黄又无遮挡网站动态图 | 国产精品门事件 | 国产品久精国精产拍 | 在线视频免费观看 | 国产韩国精品一区二区三区 | 久久av中文字幕片 | 久久伊人91| 区一区二在线 | 日本午夜免费福利视频 | 久久精品视频在线观看免费 | 九九精品久久 | 国产亚洲婷婷免费 | 国产色视频网站 | 在线免费观看亚洲视频 | 国产亚洲精品久久久久久无几年桃 | 亚洲欧洲日韩在线观看 | av电影一区二区三区 | 正在播放国产一区 | 91精品视频免费看 | 日本系列中文字幕 | 欧美日韩一级在线 | www.com黄| 91干干干 | 婷婷久久精品 | 国产视频导航 | 亚洲专区欧美专区 | 91亚洲成人 | 国内精品久久久久影院一蜜桃 | 亚洲精品午夜久久久久久久 | 在线黄色观看 | 亚洲精品视频网 | www.五月天婷婷.com | 三级av中文字幕 | 超碰国产在线 | 麻豆成人精品 | 99久久精品久久久久久动态片 | 玖操| 一色av| 日韩精品高清视频 | 91伊人久久大香线蕉蜜芽人口 | 日韩午夜视频在线观看 | 亚洲va欧美va人人爽 | 天堂av网在线 | 91欧美国产 | 久久dvd| 不卡的av在线 | 亚洲综合色视频 | 高清日韩一区二区 | 去看片 | 精品视频免费播放 | 免费看污黄网站 | 一级性视频 | 国产黄色网 | 国产精品高清一区二区三区 | 免费网站色 | 欧美成人xxxx | 亚洲 欧美 91 | 91视频在线免费下载 | 亚洲国产精品久久久 | 99热这里精品| 国产黄色片一级三级 | 久久黄色影视 | 久久久久久久久黄色 | 日韩精品短视频 | 亚洲精品女人久久久 | 99久久日韩精品免费热麻豆美女 | 激情综合色播五月 | 中文字幕黄色av | 中文字幕av全部资源www中文字幕在线观看 | 欧美a级免费视频 | 国产一线在线 | 国产精品黑丝在线观看 | 国产电影一区二区三区四区 | 天天做日日爱夜夜爽 | 丝袜制服综合网 | 色婷丁香 | 操天天操| 美女视频黄在线观看 | 欧美精品乱码久久久久久按摩 | 亚洲闷骚少妇在线观看网站 | 日本精品中文字幕在线观看 | 国产精品白丝jk白祙 | 久久精品aaa | 五月天婷婷视频 | 中文在线免费看视频 | 精品国产一区二区三区久久久蜜月 | 91污在线| 成人羞羞视频在线观看免费 | 久久黄色免费观看 | 国产喷水在线 | 美女网站黄在线观看 | 日韩影视在线观看 | 欧美成年性 | 天天色天天操综合网 | 丝袜av一区| 亚洲国产影院av久久久久 | 欧洲精品码一区二区三区免费看 | 日本精品视频一区 | 99久久精品国产欧美主题曲 | 亚洲欧洲av在线 | 精品99久久 | 国产一级片一区二区三区 | 在线亚洲日本 | 丁香久久激情 | 日韩xxxxxxxxx | 在线观看你懂的网址 | 国产色视频 | 婷婷中文字幕综合 | 能在线看的av | 天天综合色天天综合 | 国产精品毛片一区视频播不卡 | 日韩精品黄| 中文字幕精品一区久久久久 | 国模一区二区三区四区 | 国产精品久久 | 91综合久久一区二区 | 国产精品视频app | 欧美福利片在线观看 | 夜夜躁日日躁狠狠久久av | 亚洲精品大片www | 精品91在线 | 国产精品久久久久久久久婷婷 | 2024国产在线 | 日韩av电影免费观看 | 久久精品2 | 国产高清不卡在线 | 国产区av在线 | 国产一二三四在线视频 | 国产福利91精品张津瑜 | 五月亚洲婷婷 | 欧美影院久久 | 超级碰碰免费视频 | 免费黄在线观看 | 国产成人综合在线观看 | 2021av在线| 欧美日韩亚洲在线观看 | 黄a网| 欧美日韩在线观看一区二区三区 | 久久这里只有精品视频99 | 欧美日韩国产三级 | 激情五月婷婷综合 | 91福利区一区二区三区 | 热久久电影| 精品不卡av | 久久精品一二三区 | 天天干天天射天天爽 | www.久热 | 日韩精品观看 | 免费看一级| 久久图| 99re热精品视频 | 欧美91精品国产自产 | 中文视频一区二区 | www.天天综合| 婷婷激情影院 | 中国一级片在线观看 | 五月婷婷另类国产 | 亚洲综合一区二区精品导航 | 国内外成人在线 | 久久综合福利 | 女人高潮一级片 | 日韩欧美综合精品 | 五月天伊人网 | 日本激情动作片免费看 | 天天爽人人爽 | 超碰久热 | 精品播放 | 久久久人人爽 | 精品国产伦一区二区三区观看方式 | 97国产一区| 免费视频一级片 | 久久久久国产免费免费 | 国产福利不卡视频 | 在线看岛国av | 一区二区三区福利 | 国产99久久久国产精品免费看 | 精品国产一区二区三区日日嗨 | www日韩在线 | 黄色视屏免费在线观看 | 亚洲日本黄色 | 97精品久久人人爽人人爽 | 黄色av大片| 日韩中文字幕免费视频 | 国产亚洲视频中文字幕视频 | 久久久久国产一区二区三区四区 | 亚洲国产成人精品久久 | 91视频在线免费 | 成人av中文字幕 | 91自拍视频在线 | 香蕉视频在线视频 | 久久高清国产 | 视频在线一区二区三区 | 免费三级av | 夜夜嗨av色一区二区不卡 | 99久久精品一区二区成人 | 国产香蕉视频在线播放 | 久久久视频在线 | 日韩精品一区二区在线视频 | 国产精品成人免费一区久久羞羞 | 丝袜护士aⅴ在线白丝护士 天天综合精品 | 久久久久电影 | 国产成人免费精品 | 国产黄色片久久久 | 国产精彩视频 | 超碰在线最新 | 三三级黄色片之日韩 | 欧美成人999 | 国产亚洲人成网站在线观看 | 99精彩视频在线观看免费 | 69国产在线观看 | 日韩av在线影视 | 欧美日韩在线观看一区二区三区 | 久久久精品电影 | 午夜成人影视 | 在线观看一二三区 | 日韩激情在线 | 国产亚州精品视频 | 香蕉视频亚洲 | 亚洲国产成人高清精品 | 亚洲精品视频www | 天天射天天射天天射 | 奇米影视8888在线观看大全免费 | av在线电影播放 | 国产成人一区二区三区 | 久久精品视频国产 | 亚洲一二三久久 | 精品99在线观看 | 激情五月婷婷综合网 | a色网站| 亚洲成a人片综合在线 | 久久久久久高潮国产精品视 | 成年人网站免费在线观看 | 久久免费资源 | 六月丁香激情网 | 久久免费看a级毛毛片 | 亚洲国产精品久久久久婷婷884 | 又黄又刺激又爽的视频 | 6080yy午夜一二三区久久 | 91成人精品| 久草线| 精品1区2区3区 | 久久精品婷婷 | 97在线观看免费观看高清 | 麻豆视频一区二区 | 久久国产精彩视频 | 91在线精品视频 | 午夜免费在线观看 | 国产日产精品久久久久快鸭 | 国产精彩视频一区二区 | 激情视频一区二区三区 | 久久久久久欧美二区电影网 | 天天干天天操天天搞 | 久久久人人人 | 美女久久久久久久 | 免费av网站在线看 | 国产超碰在线 | 欧美福利视频一区 | 久久久精品网站 | 国产91成人 | 999久久久久久久久6666 | 色婷婷亚洲精品 | 亚洲国产成人精品在线观看 | 三级av片 | 中文字幕第 | 99热在线精品观看 | 91超在线 | 天天视频色 | 免费色视频网址 | 天天操天天怕 | 成人av网站在线观看 | 91视频-88av| 丁香网婷婷| 午夜久久影视 | 97超级碰 | 婷婷久草 | 日韩在线中文字幕视频 | 激情小说网站亚洲综合网 | 91在线播| 免费在线观看国产精品 | 亚洲天天 | 97福利视频 | 欧美日韩中文字幕在线视频 | 色婷婷九月 | 国产一级片毛片 | 五月综合激情婷婷 | 国产一线二线三线在线观看 | 日本精品中文字幕在线观看 | 中文字幕成人网 | 日韩 国产 | 99免费在线观看视频 | 久久久久久综合网天天 | 亚洲天堂香蕉 | 欧美日韩亚洲在线观看 | 最近中文国产在线视频 | 日韩视频一区二区三区在线播放免费观看 | 日本黄色免费在线 | 日本精品视频一区 | 精品视频免费在线 | 欧美另类高清 videos | 中文字幕在线人 | 操久久免费视频 | 热re99久久精品国产66热 | 精品国产一区二区三区久久久蜜月 | 久草精品视频在线播放 | 久久精品日本啪啪涩涩 | 日韩精品免费一区二区在线观看 | 全黄网站 | 国产综合婷婷 | 日韩欧美在线观看 | 黄色1级大片 | 国产精品一区二区三区久久久 | 久久av在线播放 | 中文区中文字幕免费看 | 欧美成人中文字幕 | 亚洲精品中文在线观看 | 久久精品1区 | a级国产乱理论片在线观看 特级毛片在线观看 | 免费人成在线观看网站 | 国产 av 日韩 | 日韩高清免费电影 | 91亚洲狠狠婷婷综合久久久 | 色网站免费在线看 | 国产精品久久久久久久午夜 | 国产视频18| 91视频免费播放 | 日本福利视频在线 | 综合网伊人 | 精品久久久久久久 | 久久高清 | 久久草视频 | 久久婷婷影视 | 五月婷婷狠狠 | 青草视频在线 | 欧美极品久久 | 在线观看视频h | 国产中文自拍 | 免费影视大全推荐 | 日韩极品视频在线观看 | 中文字幕在线电影 | 涩涩网站免费 | 午夜精品一区二区三区在线视频 | 在线观看日本高清mv视频 | 久久亚洲美女 | 在线观看第一页 | aa级黄色大片 | 免费色av| av电影中文字幕 | 国产精品久久久久一区二区 | 亚洲最快最全在线视频 | 国产成人av片 | 日韩免费看的电影 | 精品国模一区二区 | 在线观看一区视频 | 日韩一区正在播放 | 日本久久高清视频 | 国产黄色片在线免费观看 | 日韩三级在线观看 | 成人v| 99亚洲国产 | 在线亚洲欧美日韩 | a色视频 | 国产蜜臀av | 91日韩在线专区 | 成人黄色毛片 | 手机在线视频福利 | 天天玩天天干天天操 | 国产黄色精品网站 | av在线电影网站 | 国产精品久久久久久久久蜜臀 | 午夜久久福利影院 | 久草在线最新 | 久久免费片 | 91av在线免费视频 | 午夜精品一区二区三区在线视频 | 狠狠躁日日躁夜夜躁av | 97精品久久人人爽人人爽 | 国产又粗又猛又色又黄视频 | 午夜精品久久久久久 | 91在线看视频免费 | 午夜99| 狠狠干成人 | av中文字幕第一页 | 久操视频在线免费看 | wwxxxx日本| 久久99精品久久久久久清纯直播 | 夜夜操天天干, | 最新av在线播放 | 青春草视频 | 日韩在线观看你懂的 | 久久久久成人精品免费播放动漫 | 国产一级不卡视频 | 在线观看免费黄视频 | 伊人天天综合 | 亚洲国产精品一区二区久久hs | 亚洲欧洲一区二区在线观看 | 美女网站视频久久 | 高清免费在线视频 | 欧美精品在线观看一区 | 黄色免费网战 | 久久久久女人精品毛片 | 久久这里只有精品首页 | 精品国产一区二 | 日日干干夜夜 | 免费91麻豆精品国产自产在线观看 | 97视频人人免费看 | 97精品伊人 | 在线 国产 亚洲 欧美 | 永久av免费在线观看 | 一级免费黄视频 | 在线视频 影院 | 国产精品一区二区三区视频免费 | 右手影院亚洲欧美 | 四虎永久免费在线观看 | 欧美黄色成人 | a级片在线播放 | 欧美大片www | 天天弄天天干 | 久久久久精 | 97碰碰碰 | 国产剧在线观看片 | 18国产精品白浆在线观看免费 | 亚洲免费在线看 | 天天干天天插 | 在线观看免费一级片 | 成人高清在线观看 | 欧美精品一区二区三区四区在线 | 五月婷婷一区二区三区 | 亚洲精品在线观看不卡 | 国内精品毛片 | 97色综合 | 日本大尺码专区mv | 久久伊人爱 | 日韩最新在线视频 | 日本女人b | 91精品免费| avav片| 久久精品永久免费 | 久久久国产日韩 | 成人免费在线看片 | 欧美精品久久人人躁人人爽 | 伊人首页| 日韩 在线 | 国产午夜视频在线观看 | 色999在线| 久久国产精品一国产精品 | 不卡av电影在线 | 亚洲精品理论 | 麻花传媒mv免费观看 | 日韩欧美一区二区三区在线 | 人人射人人爱 | 日本三级在线观看中文字 | 日韩精品免费在线观看 | 日韩欧美一区二区三区在线 | 色综合久 | 美女视频是黄的免费观看 | 国产精品黄网站在线观看 | 免费 在线 中文 日本 | 久久99精品久久久久久 | 国产黄色视 | 久久在线免费观看视频 | 99精品99 | 天天操天天摸天天干 | 免费观看十分钟 | 亚欧洲精品视频在线观看 | 国产伦理久久精品久久久久_ | 操老逼免费视频 | 亚洲狠狠操 | 久精品视频 | 久久精品久久精品久久 | 久久艹国产视频 | 精品国产免费av | 国产在线观 | 蜜臀久久99精品久久久无需会员 | 欧美日韩国产一区二区三区在线观看 | 激情伊人五月天 | 日本 在线 视频 中文 有码 | 久久黄色小说 | 成人午夜精品久久久久久久3d | 九九99 | 日韩精品一区二区免费 | 激情五月婷婷激情 | 日韩色视频在线观看 | 日韩av二区 | 久久午夜网 | 在线观看的a站 | 在线 成人 | 国产精品爽爽爽 | 亚洲丝袜一区二区 | 18国产精品白浆在线观看免费 | 69国产盗摄一区二区三区五区 | 91香蕉视频在线下载 | 日本中文字幕在线免费观看 | 91精品国产91久久久久久三级 | 国产中的精品av小宝探花 | 在线观看 亚洲 | 久热国产视频 | 国产精品入口66mio女同 | 精品久久久久免费极品大片 | 中文字幕亚洲欧美日韩2019 | 99精品国产99久久久久久福利 | www.国产毛片 | 伊人五月天婷婷 | 国产做爰视频 | 久久婷婷网 | 国产精品99久久99久久久二8 | 欧美在线你懂的 | 超碰人人干人人 | 日韩高清在线一区 | 99资源网| 免费在线成人av电影 | 国产精品美女久久久久久2018 | 成人羞羞视频在线观看免费 | 中文字幕资源网 国产 | 在线观看免费观看在线91 | av黄色成人 | 久久久久成人精品免费播放动漫 | 热久久99这里有精品 | 国产精品麻豆三级一区视频 | 日韩免费不卡av | 99久久久国产免费 | 看国产黄色片 | 亚洲精品久久视频 | 99在线观看精品 | 国产精品www | 国产成人久久77777精品 | 日韩激情第一页 | 久精品在线观看 | 国产亚洲精品成人av久久影院 | 亚洲少妇激情 | 性色大片在线观看 | 好看av在线 | 国内精品亚洲 | 伊人六月 | 色综合久久久久久久 | 伊人伊成久久人综合网站 | 久久久国产日韩 | 少妇按摩av | 国产精品精品国产婷婷这里av | 99色在线视频 | 国产视频欧美视频 | 国产午夜剧场 | 麻豆成人在线观看 | 中文字幕乱码日本亚洲一区二区 | 色天天久久 | 久久亚洲综合国产精品99麻豆的功能介绍 | 国产在线精品国自产拍影院 | 成人免费中文字幕 | www178ccom视频在线 | 天天干天天干天天射 | 国产日本三级 | www.91国产| 狠狠做六月爱婷婷综合aⅴ 日本高清免费中文字幕 | 国产精品黑丝在线观看 | 特级黄色一级 | 免费在线观看成人av | 一区二区三区在线不卡 | 日本在线观看视频一区 | 久久电影中文字幕视频 | 成人欧美一区二区三区黑人麻豆 | 最新在线你懂的 | 欧美日韩一区二区三区在线免费观看 | 亚洲精品久久久久中文字幕二区 | 久久综合桃花 | 成人免费色 | 玖玖在线观看视频 | 久久视频免费观看 | 91成人天堂久久成人 | 天天天天干 | 免费在线观看成年人视频 | 天天躁日日 | 91精品夜夜| 国产精品久久久久久五月尺 | 五月婷久 | 99精品一级欧美片免费播放 | 日本精品久久久一区二区三区 | 麻豆91在线 | 成人午夜影院在线观看 | 十八岁免进欧美 | 四虎永久视频 | 97超级碰碰碰视频在线观看 | a在线一区 | 激情欧美在线观看 | 成人av网站在线播放 | 九九在线免费视频 | 亚洲综合一区二区精品导航 | 免费h精品视频在线播放 | 国产综合激情 | 亚洲 欧美 变态 国产 另类 | 超碰人人99 | 一区二区三区精品在线 | 成人黄色电影视频 | 亚洲 欧美变态 另类 综合 | www免费网站在线观看 | 国产在线 一区二区三区 | www婷婷| 久久国产精品视频免费看 | 成人性生交大片免费观看网站 | 久久综合九色综合欧美就去吻 | 亚洲精品在线网站 | 中文字幕亚洲在线观看 | 久久97久久97精品免视看 | 69精品 | 国产高清视频免费最新在线 | 伊人色**天天综合婷婷 | 国产一级片观看 | 日韩激情精品 | 国产精品中文久久久久久久 | 一区二区亚洲精品 | 91成人免费在线 | 国产999精品久久久 免费a网站 | 成年人黄色av | 999久久国产精品免费观看网站 | 国产一级片免费视频 | 日韩欧美精品免费 | 中文字幕观看在线 | 久久精品一区二区三区视频 | 国产小视频免费在线观看 | 在线成人高清电影 | 免费国产一区二区 | 天天操夜夜拍 | 91久久人澡人人添人人爽欧美 | 国产精品自在线拍国产 | 在线观看黄色av | 91av视频在线免费观看 | 国产成人免费网站 | 国产视| 黄色软件视频大全免费下载 | 天天干天天做 | 精品国产一区二区三区久久 | 国产午夜精品福利视频 | 毛片在线网 | 中国成人一区 | 亚洲伊人第一页 | 精品99在线 | 黄色精品视频 | 狠狠躁日日躁狂躁夜夜躁av | 国产色秀视频 | 人人狠狠综合久久亚洲 | 五月婷视频 | 日日夜夜草 | 91精品国产三级a在线观看 | 免费看毛片网站 | 国产麻豆精品一区二区 | 狠狠躁夜夜a产精品视频 | 亚洲人视频在线 | 中文字幕观看视频 | 狠狠干天天 | 国产日韩亚洲 | 日日夜夜噜 | 97综合视频| 超碰人人超| 一区二区三区高清在线观看 | 96在线 | 欧美精品亚州精品 | 色在线免费 | 免费高清在线观看成人 | 久久精品波多野结衣 | 久热免费| 欧美,日韩 | 亚洲综合欧美日韩狠狠色 | 91激情 | 欧美日韩成人一区 | 少妇性bbb搡bbb爽爽爽欧美 | 黄色大片入口 | 欧洲精品在线视频 | 久久久黄色 | 不卡在线一区 | 欧美极品在线播放 | 国产视频 亚洲精品 | 久久久精品视频成人 | 国产精品毛片一区 | 狠狠gao | 欧美日韩在线精品一区二区 | 久久久久国产精品午夜一区 | 精品美女在线观看 | 国产人在线成免费视频 | 在线观看亚洲免费视频 | av成人动漫在线观看 | 99精品免费在线观看 | 高清不卡一区二区三区 | 国产黄色免费电影 | 成人免费观看网站 | 免费观看av| 日韩欧美国产激情在线播放 | 91精品国产自产91精品 | 2017狠狠干 | 米奇四色影视 | 91香蕉久久 | 久久久一本精品99久久精品 | 在线免费精品视频 | 久久99久国产精品黄毛片入口 | 五月天婷婷狠狠 | 热久久在线视频 | 99视频国产在线 | 久久综合狠狠综合久久狠狠色综合 | 玖玖玖精品 | 欧美高清视频不卡网 | 久久特级毛片 | 免费久久网站 | 欧美激情综合五月 | 色午夜影院 | 久久精品视频在线 | 天天操天天谢 | 免费在线成人av | 亚洲视频免费在线 | 欧美xxxx性xxxxx高清 | 玖玖爱免费视频 | 中文字幕在线资源 | 国产福利av | 久久国产精品视频免费看 | 日韩欧美高清免费 | 中文视频一区二区 | 国产午夜小视频 | www.久久色 | 日本激情动作片免费看 | 日日夜夜天天久久 | 日韩精品在线一区 | 97日日| 91免费视频黄 | 久久久资源 | 一区二区不卡高清 | 欧美成a人片在线观看久 | 天天艹天天 | 国产精品亚洲综合久久 | 久久久国产精品一区二区三区 | 国产盗摄精品一区二区 | 激情伊人五月天 | 国产色影院 | 午夜性色 | 国产91精品一区二区 | 色瓜 | 丰满少妇麻豆av | 欧美日韩色婷婷 | 免费精品视频在线 | 日韩av电影中文字幕 | 美女视频黄频大全免费 | 婷婷五综合 | 成人久久电影 | 亚洲二区精品 | 亚洲精品 在线视频 | 成人午夜影视 | se视频网址 | 午夜免费视频网站 | 日韩免费b | 国产综合香蕉五月婷在线 | 精品一区精品二区高清 | 91大片网站 | 日韩网站中文字幕 | 亚洲va欧美va人人爽 | 成人午夜毛片 | 久久人人97超碰精品888 | 蜜桃av综合网 | 国产精品免费久久久久久久久久中文 | 91豆花在线 | 国产二区av | av解说在线| 在线观看aaa | 91av视频在线免费观看 | 欧美一级视频在线观看 | 久保带人 | 在线观看免费成人av | 99色免费视频 |