欢迎来到天天文库
浏览记录
ID:33941486
大小:67.02 KB
页数:7页
时间:2019-03-01
《coding-standard编程参考.pdf》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、GlusterFSCodingStandardsZResearchJuly14,2008•StructuredefinitionsshouldhaveacommentpermemberEverymemberinastructuredefinitionmusthaveacommentaboutitspurpose.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-
此文档下载收益归作者所有