Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Вопрос этикета, как назвать переменную-массив, в единственном или множественном числе? (4 стр)

Вопрос этикета, как назвать переменную-массив, в единственном или множественном числе? (4 стр)

Страницы: 1 2 3 4
DelfigamerПостоялецwww3 апр. 201814:23#45
fantomass
> "points.size()"? (Почему) не делишь поля/методы как существительные/глаголы?
Delfigamer
> Потому что это аксессор, и в STL акксессоры именуются тем, что они возвращают.
> Если вас смущают функции-существительные, то порекомендую держаться в сторонке
> от языков функциональных.
fantomass
> Haskell is useless
> И про брэйнфак мне ещё расскажи ;)
Delfigamer
> Я и не настаиваю же.
> Зачем разбираться в функциональных языках? И на алгоритмических всё прекрасно
> кодится.
Ну и на всякий случай напомню - это ответ на
gudleifr
> Что за суповой набор? И какое отношение это имеет к теме?

Правка: 3 апр. 2018 14:24

gudleifrПостоялецwww3 апр. 201814:37#46
Delfigamer
Спасибо, понял. Т.е. Вы считаете, что произвол в именах недопустим, т.к. их форма задана нам внешними условиями.

Правка: 3 апр. 2018 14:39

DelfigamerПостоялецwww3 апр. 201815:44#47
Я считаю, что в идеале код должен писаться так, чтобы работа с ним требовала наименьших усилий. Отсюда и следствия.
Одну вещь следует называть одним именем. Если есть переменные "point_list" и "points_count", у читающего возникает вопрос - а почему в одном месте "point", а в другом - "points"? Чем вызвано различие в терминологии? К тому же, при написании кода надо будет постоянно помнить/регулярно проверять, какая переменная в каком числе.
Части целого должны быть объединены этим целым, будь то префикс к именам, класс, неймспейс или что-то ещё.
Одна единица программы, будь то переменная, класс, модуль или что-то ещё, должна выполнять строго одну функцию. Различные единицы следует разделять, чем меньше связей в программе - тем лучше, потому что тогда при прочтении кода не нужно будет держать в голове подробности работы пятидесяти прочих модулей. В идеале, в голове не требуется держать ничего, вся нужная информация уже заключена в коде, который к модулю обращается; отсюда правило наименований - единицы именуются исходя из того, какой от них прок там, где их используют.
Наконец, программа должна читаться, как естественный текст. Выражения должны быть существительными, операции - глаголами. Имена следует выбирать такие, которые без труда можно прочитать вслух. Алгебраические выражения так же считаются "естественным текстом" и подчинаются тем же правилам - как операдны, так и выражение целиком являются существительными. Как следствие, points.size() - это вполне допустимое название, поскольку обозначает не операцию, изменяющую состояние программы, а величину.
Если хочется посмотреть, а как оно на деле - вот, можете даже попробовать почитать.
fantomassПостоялецwww3 апр. 201816:39#48
Delfigamer
> points.size() - это вполне допустимое название
Нет. Это ретроградство 90х. Если в языке есть проперти, то ты оформляешь это в проперти и не паришься. Боги не зря же нам их даровали. А если их нет нет, то добавляешь явные "get"-еры, "set"-еры и тоже не паришься.

Например, в js'е "var size = points.size" - валидно, но по условию - косяк. Запаришься дебажить, если твои фуи - это мясо из разных частей и форм речи. Поэтому суть использования глаголов в фуях в том, что ты автоматом, на подкорке, ставишь скобочки для вызова. Фундаментальная мелочь, которая дико упрощает жизнь.

Delfigamer
> Одна единица программы, будь то переменная, класс, модуль или что-то ещё,
> должна выполнять строго одну функцию
Кармак с тобой бы не согласился. У него была где-то статейка, где он пояснял, что принимать теории и рекомендации за догматы - чревато (может СССР распасться например, лол). В своё время GOTO выпилили под нытьё про "спагетти-код". Но по факту современное структурирование во многих парадигмах - это ещё более спагетти, чем они были во времена существования GOTO.

Если какие-то куски кода должны выполняться последовательно, то разделять их - контрпродуктивно.

Правка: 3 апр. 2018 17:41

DelfigamerПостоялецwww3 апр. 201818:02#49
fantomass
> Нет. Это ретроградство 90х. Если в языке есть проперти, то ты оформляешь это в
> проперти и не паришься. Боги не зря же нам их даровали. А если их нет нет, то
> добавляешь явные "get"-еры, "set"-еры и тоже не паришься.
Это называется «личные предпочтения».
Моё предпочтение - называть глаголами действия, которые меняют состояние программы. Со скобками проблем почему-то никогда не возникало.
Тебе нравится писать "get" - пожалуйста, лишь бы делал везде одинаково.

fantomass
> Кармак с тобой бы не согласился.
Что поделать, сколько людей, столько и мнений.

fantomass
> принимать теории и рекомендации за догматы - чревато
Потому я и повторяю в каждом абзаце, что идеал - это идеал, на то он и идеал, что идеал.

fantomass
> Если какие-то куски кода должны выполняться последовательно, то разделять их -
> контрпродуктивно.
Не понял. Что значит «выполняться последовательно»? К порядку действий в алгоритмах принцип единой ответственности не имеет никакого отношения.

Правка: 3 апр. 2018 18:04

Great V.Постоялецwww3 апр. 201821:18#50
Роман Шувалов
Я тоже вброшу, че
auto points = std::array<point_t, 1000>();
auto points_count = points.size();
auto &point = points[0];

for (auto &point : points);
for (auto &i : range(points))
{
  x[i] = points[i];
}

Правка: 4 апр. 2018 13:21

DelfigamerПостоялецwww3 апр. 201822:13#51
Great V.
> Я тоже вброшу, че
Я ещё не кидал свои крестовые соглашения? Давайте кину своих крестовых соглашений (ещё раз), чтоб картина уж точно была полной.
}:+()___ [Smile]Постоялецwww4 апр. 20183:01#52
Great V.
> auto &points_count = points.size();
Это не скомпилируется.
fantomassПостоялецwww4 апр. 20183:24#53
Delfigamer
> «личные предпочтения»
> сколько людей, столько и мнений
> Со скобками проблем почему-то никогда не возникало.
Нет конечно. Нубские отмазки. Там где есть знание, мнению места нет. Мнение - это знание в становлении. Поэтому запросто может оказаться заблуждением. Если ты к чему-то придрочился, например входить через окно, а не через дверь, то это не меняет факта, что обьективно в подавляющем количестве случаев удобнее, быстрее и эффективнее всё же пользоваться дверью. Особенно, если это касается не тебя одного. "Практика - критерий истины", которая всегда подразумевает и начинается с аналитики, которая определяет проблематику, метрики, тд тп тп..

В данном случае я говорю про элементарный, формальный фундамент, который можно любому нубу за минуту пояснить и включить в работу, а ты про всякую эзотерику, основанную на личном опыте веры, - про "состояния", "изменение", "ацессоры", тд тп, которые "берут банан, который тянет за собой гориллу, пальму на которой она висит, а с ней и целые джунгли", которые запаришься обьснять и холиварить, ибо лишь мнишь, а не знаешь и к знанию не тянешься.

Delfigamer
> Моё предпочтение - называть глаголами действия, которые меняют состояние программы
> Давайте кину своих крестовых соглашений (ещё раз), чтоб картина уж точно была полной
Либо ты опять левую ссылку запостил, либо ппц каша в голове. Например "getdefstring" - мало того что мясное название, так ещё и глагол, так ещё и не меняет состояние. Сам себе противоречишь. Это быдлокод.

Delfigamer
> Потому я и повторяю в каждом абзаце, что идеал - это идеал, на то он и идеал, что идеал.
На что тебе и было рассказано про догматы, намекая, что эти твои "идеалы" - не идеальны, как минимум, а в пределе так и ваще чё попало. Но, видать, как типичный религиозный фанатик, у тебя не возникает мысли, что можно как-то иначе. И чуть что - опыт личной веры. В этом собственно и есть суть догматизма.

Delfigamer
> Не понял. Что значит «выполняться последовательно»? К порядку действий в
> алгоритмах принцип единой ответственности не имеет никакого отношения.
Сам-то понял что написал?

"Выполняется последовательно" означает выполняется последовательно, игнорируя инкапсуляцию, ооп, паттерны, разведения по функционалу и функциям и тд тп. Чё непонятного-то?

DelfigamerПостоялецwww4 апр. 20186:52#54
fantomass
> Нубские отмазки.
Говорит человек, который пинает решения авторов STL словами "мне это не нравится, я этого не понимаю", а в ответ на Wolfram зачем-то заговорил про брейнфак. Изображение

fantomass
> Например "getdefstring" - мало того что мясное название, так ещё и глагол, так
> ещё и не меняет состояние.
По моему художественному видению, сборка описывающей строки - это операция достаточно сложная и приседательная, что на сам процесс выполнения этой операции следует обратить отдельное внимание. Тогда как vector.size() инлайнится до одного вычитания, node->getdefstring() именно что берёт аллокатор в руки и начинает получать.
Можно было бы написать вообще "constructdefstring", но я пожалел буков.
Что же до "defstring" - это такой термин, который используется по всему движку и означает "текстовое представление объекта, предназначенное для отладки".

fantomass
> В этом собственно и есть суть догматизма.
Вообще, конечная цель оптимизации исходного кода указана в начале - это именно
Delfigamer
> чтобы работа с ним требовала наименьших усилий
То, что я написал после - это рекомендации (даже не правила), которые обычно двигают код в сторону моего личного оптимума. И заметь, я говорю:
> points.size() - это вполне допустимое название
но я не говорю, что оно «единственное верное».
Если же какое-то соглашение требует больше приседаний, чем оно экономит нервов - в топку это соглашение. Потому и getdefstring.

fantomass
> "Выполняется последовательно" означает выполняется последовательно, игнорируя
> инкапсуляцию, ооп, паттерны, разведения по функционалу и функциям и тд тп. Чё
> непонятного-то?
У нас явно разные представления о значении слова "последовательный", так что я так и не могу понять, что же ты пытаешься донести.

ПОСЛЕДОВАТЕЛЬНЫЙ <...> Не отступающий от каких-л. принципов.

Бугага.
Если ты говоришь о ситуации, когда в архитектуре обнаруживаются косяки и она начинает протекать - что ж поделать, так получилось, не переписывать же теперь всю программу с нуля.
Если же ты о разделении одной мошонки по десяти файлам - опять же,
> Если какое-то соглашение требует больше приседаний, чем оно экономит нервов - в топку это соглашение.

Правка: 4 апр. 2018 6:59

dayllengerПользовательwww4 апр. 201811:36#55
Лично я за то, чтобы глаголами обозначались действия, а существительными свойства. Вон в языке D можно опускать скобочки и выносить первый аргумент функции наружу:
void main()
{
    import std.exception, std.stdio, std.process;

    auto result = ["whoami"].execute;
    enforce(result.status == 0);
    result.output.write;
}
Great V.Постоялецwww4 апр. 201813:21#56
}:+()___ [Smile]
> Это не скомпилируется.
Ну да... жертва копипаста. Спасибо.
Роман ШуваловУчастникwww4 апр. 201813:38#57
dayllenger
> глаголами обозначались действия, а существительными свойства.
Count может быть и глаголом, и существительным.
DelfigamerПостоялецwww4 апр. 201814:21#58
Роман Шувалов
> Count может быть и глаголом
Только если стоит слева от существительного.
fantomassПостоялецwww4 апр. 201815:37#59
Роман Шувалов
Да дался тебе этот "count" ))

Перефразируй в что-нибудь типа "getAmount" и норм. Ну или определись, что во всех сомнительных случаях, когда трактовать можно двояко, по-умолчанию всегда будет что-то одно.

Страницы: 1 2 3 4

/ Форум / Программирование игр / Общее

2001—2018 © GameDev.ru — Разработка игр