Являются ли кавычки вокруг хеш-ключей хорошей практикой в ​​Perl? - PullRequest
32 голосов
/ 31 декабря 2008

Стоит ли заключать в кавычки ключи при использовании хэша в Perl?

Я работаю над чрезвычайно большой унаследованной базой кода Perl и пытаюсь перенять множество лучших практик, предложенных Дамианом Конвеем в Perl Best Practices . Я знаю, что лучшие практики - всегда - очень деликатный вопрос для программистов, но, надеюсь, я смогу получить хорошие ответы на этот вопрос, не начав войны с пламенем. Я также знаю, что это, вероятно, что-то, о чем многие люди не будут спорить, потому что это незначительная проблема, но я пытаюсь получить твердый список руководств, которым нужно следовать, когда я пробираюсь через эту базу кода.

В книге Perl Best Practices Дамиана Конвея есть этот пример, который показывает, как выравнивание помогает читабельности фрагмента кода, но не упоминает (где-нибудь в книге, которую я могу найти ) что-нибудь о цитировании хеш-ключей.

$ident{ name   } = standardize_name($name);
$ident{ age    } = time - $birth_date;
$ident{ status } = 'active';

Не лучше ли написать кавычки, чтобы подчеркнуть, что вы не используете голые слова?

$ident{ 'name'   } = standardize_name($name);
$ident{ 'age'    } = time - $birth_date;
$ident{ 'status' } = 'active';

Ответы [ 13 ]

2 голосов
/ 31 декабря 2008

Лучше с кавычками, потому что это позволяет вам использовать специальные символы, не разрешенные в голых словах. Используя кавычки, я могу использовать специальные символы моего родного языка в хеш-ключах.

1 голос
/ 01 января 2009

Я сам задумался об этом, особенно когда обнаружил, что сделал несколько ошибок:

 use constant CONSTANT => 'something';
 ...
 my %hash = ()
 $hash{CONSTANT}          = 'whoops!';  # Not what I intended
 $hash{word-with-hyphens} = 'whoops!';  # wrong again 

Что я обычно делаю сейчас, так это применяю кавычки повсеместно для каждого хэша, если они нужны хотя бы одному из буквальных ключей; и используйте круглые скобки с константами:

 $hash{CONSTANT()} = 'ugly, but what can you do?';
0 голосов
/ 31 декабря 2008

Я всегда использовал их без кавычек, но я бы повторил использование строгих и предупреждений, поскольку они выделяют большинство распространенных ошибок.

...