我一直在編寫和關閉我的整個生活。我主要編碼Perl,但也有一些Java,PHP,C,C++。我甚至刺穿了Emacs Lisp,而且我偶爾做了shell腳本。然而,我從來沒有真正從事這個主題獲得任何專業知識 - 其他事情對我來說有更高的優先權。我不認爲自己真的能夠熟練使用任何語言,除了Perl之外,現在我還要學習Haskell。關於變量/函數命名約定的思考
最近,我一直在想我的編碼風格。不是實際代碼的風格;作爲一個CS學生,我只做有趣或學校的項目,這使我能夠寫出我認爲幾乎總是美麗的代碼。特別是有一個問題令我煩惱。這是一件頗爲奇怪的事情,但我仍然希望聽到其他意見。
這是事情:我發現自己花了相當長的時間將我的函數和變量命名爲我可能想到的最容易理解的名稱。有時候這個任務可能非常單調乏味,即使沒有考慮到找到一個表達代碼片段含義的變量名稱的困難。例如,現在我正在製作一個看起來像這樣的函數。
這是Haskell代碼,但含義應該很清楚。 (所以如果你想要,只跳過代碼和閱讀它的確切含義並不重要。)
-- return the row with least number of Nothing values
bestRow :: [[Maybe Int]] -> Int -> Maybe (Int,Int)
bestRow [] _ = Nothing
bestRow (row:rows) thisIndex
| nextRow == Nothing && thisFilled > 8 = Nothing
| nextRow == Nothing = Just (thisIndex,thisFilled)
| thisFilled >= nextFilled = Just (thisIndex,thisFilled)
| thisFilled < nextFilled = nextRow
where thisFilled = length $ filter (/= Nothing) row
nextRow = bestRow rows (thisIndex + 1)
(nextIndex,nextFilled) = fromMaybe (-1,-1) nextRow
我不能在變量名決定。這個功能做得很好,但沒有那麼清晰。一旦我解決了一個解決方案,我花了15分鐘命名和重命名這些變量。我應該使用curIndex,nextIndex ||索引,nextIndex || ind,indN等?在我決定完成15分鐘後,我意識到這個功能並不需要:我找到了一個更好的解決方案來解決我的問題。 BOOM我已經浪費了很多時間來簡單地清理代碼,對任何人都沒有用,尤其是對我來說。或者至少有這種感覺。
這是發生在我身上的事情,不止一次,而且非常令人沮喪,主要是因爲它讓我感到無聊。你對這個問題有什麼想法?這是你經歷過的事情嗎,我做事的方式有什麼問題,或者是一些不可避免的事情?
是否存在「完美」的變量名稱,或者如果它們至少不會混淆你的代碼,那麼它是「好的」?
感謝,
斯特凡卡加斯
您可能會損失較少的時間清理不良代碼,然後丟棄它,而不是清理並保留它。我希望我和你一起工作的人擔心變量命名。 – 2009-10-01 20:08:19