Я кодировал и выключал всю свою жизнь. Я в основном кодировал Perl, но также немного Java, PHP, C, C ++. Я даже попробовал Emacs Lisp и иногда делал сценарий оболочки. Тем не менее, я никогда не привлекал предмет для получения какого-либо опыта - другие вещи имели для меня более высокие приоритеты. Я не считаю себя действительно опытным в каком-либо языке, кроме 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 || index, nextIndex || инд, индн и т. д.? Через 15 минут после того, как я решил, что все готово, я понял, что эта функция не нужна, в конце концов: я нашел гораздо лучшее решение своей проблемы. БУМ Я потерял много времени, просто чистя код, который никому не нужен, и меньше всего - мне. Или, по крайней мере, так оно и было.
Это то, что случалось со мной не раз, и это очень расстраивает, в основном потому, что я чувствую себя глупым. Что вы думаете об этом? Это то, что вы испытали, что-то не так с моим способом ведения дел или просто что-то неизбежное?
Существуют ли "идеальные" имена переменных или "хорошо", если они хотя бы не запутывают ваш код?
Спасибо
Стефан Кангас