資源描述:
《coding-standard編程參考.pdf》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫。
1、GlusterFSCodingStandardsZResearchJuly14,2008?Structurede?nitionsshouldhaveacommentpermemberEverymemberinastructurede?nitionmusthaveacommentaboutitspurpose.Thecommentshouldbedescriptivewithoutbeingoverlyverbose.Bad:gf_lock_tlock;/*lock*/Good:DBTYPEaccess_mode;/*accessmodeforaccessing*thedatab
2、ases,canbe*DB_HASH,DB_BTREE*(optionaccess-mode)*/?DeclareallvariablesatthebeginningofthefunctionAlllocalvariablesinafunctionmustbedeclaredimmediatelyaftertheopeningbrace.Thismakesiteasytokeeptrackofmemorythatneedstobefreedduringexit.Italsohelpsdebugging,sincegdbcannothandlevariablesdec
3、laredinsideloopsorothersuchblocks.?AlwaysinitializelocalvariablesEverylocalvariableshouldbeinitializedtoasensibledefaultvalueatthepointofitsdeclaration.AllpointersshouldbeinitializedtoNULL,andallintegersshouldbezeroor(ifitmakessense)anerrorvalue.Good:intret=0;char*databuf=NULL;int_fd=-1;1?In
4、itializationshouldalwaysbedonewithacon-stantvalueNeveruseanon-constantexpressionastheinitializationvalueforavariable.Bad:pid_tpid=frame->root->pid;char*databuf=malloc(1024);?ValidateallargumentstoafunctionAllpointerargumentstoafunctionmustbecheckedforNULL.AmacronamedVALIDATE(incommon-utils.h
5、)takesoneargument,andifitisNULL,writesalogmessageandjumpstoalabelcallederraftersettingopretandoperrnoappropriately.Itisrecommendedtousethistemplate.Good:VALIDATE(frame);VALIDATE(this);VALIDATE(inode);?NeverrelyonprecedenceofoperatorsNeverwritecodethatreliesontheprecedenceofoperatorstoexecute
6、correctly.Suchcodecanbehardtoreadandsomeoneelsemightnotknowtheprecedenceofoperatorsasaccuratelyasyoudo.Bad:if(op_ret==-1&&errno!=ENOENT)Good:if((op_ret==-1)&&(errno!=ENOENT))?UseexactlymatchingtypesUseavariableoftheexacttypedeclaredinthemanualtoholdthereturnvalueofafunction.Donotusean“equiva
7、lent”type.Bad:intlen=strlen(path);Good:size_tlen=strlen(path);2?Neverwritecodesuchasfoo->bar->baz;checkeverypointerDonotwritecodethatblindlyfollowsachainofpointerreferences.AnypointerinthechainmaybeNULLandthuscauseacrash.Verifythateachpointerisnon-