Въпрос отностно Style-Guide

  1. Докато четох Ruby-Style-Guide, забелязах следното:

    • . . .
    • Use SCREAMING_SNAKE_CASE for other constants.
    • . . .

    докато, на лекции говорохме само за това, че трябва да започват с главна буква. Та, кое от двете трябва да спазваме, и ако е второто, как дефинираме константи с повече от една 'дума' (Pi_Over_Eight или Pi_over_eight)?

  2. В Ruby единственото синтактично изискване към константите е да започват с главна буква. Това е всичко. Другото е конвенция.

    Едната конвенция се прилага за имена на класове и модули (които също са константи). Например Array, Hash, Person, SignUp и прочее. Въпреки, че е синтактично валидно да кръстим клас SOMETHING, това никога не се прави.

    Другият вид константи са "обикновените" такива, в които стоят някакви данни, например VERSION = '2.1.3' или, както ти си написал, PI_OVER_E = 3.14 / 2.71. За този тип константи се ползва SCREAMING_SNAKE_CASE. Пак, синтактично може да имате константа Pi_over_E и ще работи, но - пак - това не се прави.

  3. Първо, Митьо го каза, но обърнете внимание, че объркването идва от това, че думата "константа" има два смисъла. Единия (константа-1) е "конструкция в Ruby, която има собствени правила за lookup и чиито имена започват с главни букви". Втория (константа-2) е "стойност, която не се променя". Определено има константи-2 в Ruby, които са константи-1. Също, може да направим константа-2, която да не е константа-1. Например: $pi = 3.14, т.е., ползваме глобална променлива (или променлива-1 ;)) и се разбираме, че никога няма да променяме нейната стойност. Това, разбира се, би нарушило style guide-а.

    Второ, ваденето на неща от контекст е лоша идея. Горния ред на същия този style guide, който цитираш, гласи:

    • Use CamelCase for classes and modules. (Keep acronyms like HTTP, RFC, XML uppercase.)
    • Use SCREAMING_SNAKE_CASE for other constants.

    Ако се замислиш, дори няма противоречие между това и лекциите ни. На лекциите сме казали, че константи-1 започват с главни букви, а това тук казва как да ги именоваме взависимост от типа им.

    На този въпрос можеше да си отговориш с внимателно четене и малко размисъл. Моят контра-въпрос е: защо не успя да си отговориш сам? Т.е., на кое от горните неща не бе обърнал внимание :)

    П.П.: Контра-въпросът не е защото обичам да се заяждам (така е, обичам), а защото целия ни екип сигурно инвестира около човеко-час да ти отговори по некоординиран начин. Ако си беше отговорил сам на въпроса, този човеко-час можеше да бъде инвестиран в отговори на далеч по-интересни въпроси :)

    П.П.П.: Провокирам Митьо да обори П.П.-то :)

Трябва да сте влезли в системата, за да може да отговаряте на теми.