Code Complete表示总是使用块标识符是一种好的做法,无论是为了清晰还是作为防御措施.
自读这本书以来,我一直在虔诚地做这件事.有时看起来似乎过多,如下面的情况.
Steve McConnell是否有权坚持始终使用块标识符?您会使用以下哪些?
//naughty and brief with myGrid do for currRow := FixedRows to RowCount - 1 do if RowChanged(currRow) then if not(RecordExists(currRow)) then InsertNewRecord(currRow) else UpdateExistingRecord(currRow); //well behaved and verbose with myGrid do begin for currRow := FixedRows to RowCount - 1 do begin if RowChanged(currRow) then begin if not(RecordExists(currRow)) then begin InsertNewRecord(currRow); end //if it didn't exist,so insert it else begin UpdateExistingRecord(currRow); end; //else it existed,so update it end; //if any change end; //for each row in the grid end; //with myGrid
解决方法
就个人而言,我更喜欢第一个,因为恕我直言“结束”;不要告诉我太多,一旦一切都接近,我可以通过身份来判断什么时候会发生什么.
我相信在使用大型语句时,块更有用.您可以进行混合方法,在其中插入一些“开始…结束;”并注释它们结束的内容(例如将其用于with和第一个if).
恕我直言,您也可以将其分解为更多方法,例如,该部分
if not(RecordExists(currRow)) then begin InsertNewRecord(currRow); end //if it didn't exist,so insert it else begin UpdateExistingRecord(currRow); end; //else it existed,so update it
可以采用单独的方法.