LINUX.ORG.RU

namespaces vs suffix/prefix

 , ,


0

2

Всем привет, вот работаю над своим pet проектом на расте, есть отдельно у меня компоненты, системы и еще всякое, как лучше сделать - использовать namespace по типу: components::Grid или добавлять суфикс к имени: GridComponent. Первый вариант вроде логичнее использовать, но навигация в коде чуть-чуть проще, если добавлять символам суфиксы, тогда будет легко найти нужный символ, к пример, если есть components::Grid и systems::Grid, то при попытке найти нужный символ я ввожу Grid и мне выдает 2 символа, а если добавить суфикс, то такой проблемы нету.

PS: Добавил тег C++, т.к. в плюсах тоже есть неймспейсы и мнение разработчиков на плюсах мне тоже интересно.

★★★

Последнее исправление: Int64 (всего исправлений: 1)

а если добавить суфикс, то такой проблемы нету.

А куда она девается, если у тебя так же GridComponent и GridSystem будет.

anonymous
()
Ответ на: комментарий от anonymous

я тогда просто ввожу GridComponent, либо GridSystem в зависимости от того, что именно мне нужно в данный момент.

Int64 ★★★
() автор топика

Ты можешь использовать components::Grid и импортировать её как GridComponent, например. Но я не уверен, что это хорошая идея.

theNamelessOne ★★★★★
()
Ответ на: комментарий от theNamelessOne

ну я это и имел ввиду, я использую rust-analyzer вместе с емаксом.

Int64 ★★★
() автор топика

components::Grid или добавлять суфикс к имени: GridComponent

Лучше первое, мне кажется — меньше букав, меньше дублирования и проще поменять при необходимости. А раскладывать по разным директориям все равно придется.

Nervous ★★★★★
()
Последнее исправление: Nervous (всего исправлений: 1)

В components::Grid класс называется Grid, т.е. сетка (решетка, …)

В GridComponent класс называется компонент (grid - прилагательное).

По той же причине не car::Green, а GreenCar. Это машина. Какая? Зеленая. Название Grid или GridComponent зависит от того, у тебя это сетка или компонент.

Marvel
()
Ответ на: комментарий от Marvel

grid - прилагательное

Атрибутивное существительное.

i-rinat ★★★★★
()

Я бы выбрал первый вариант. Опять же, если у тебя два разных Grid, то всегда можно сделать use components::Grid as GridComponent
Впрочем всё очень ситуативно.

WatchCat ★★★★★
()

неймспейсы предпочтительнее, меньше будет писанины, а навигацию должна разруливать IDE, если она тебе не помогает, то меняй на другую

EugeneBas ★★
()

Докатились. Самый важный фактор в дизайне API теперь, насколько удобно будет в IDE символы вводить.

rupert ★★★★★
()

Я использую неймспейсы/модули, а затем импортирую под другим именем. Иногда имет смысл смешивать. Если по какому-то признаку components::Grid и systems::Grid образуют одно множество some_set, то я делаю some_set::{ComponentsGrid, SystemsGrid}

anonymous-angler ★☆
()
Ответ на: комментарий от rupert

А кому должно быть удобно? Повелителям ноутпада? Код пишут для того, чтобы его было удобно читать. Читают код либо в IDE, либо в виде diff-а в почтовом клиенте. Это основные юз-кейсы.

Legioner ★★★★★
()
Ответ на: комментарий от Int64

IMO это подгоняние кода под IDE, что не есть гуд. Настрой чтобы понимала, или поменяй IDE. Основные критерии должны быть связаны с человеком а не с куском кода.

Суффиксы или неймспейсы - в принципе вкусовщина. Можно при импорте «поменять» имя на подлиннее/покороче.

В основном все зависит от толщины проекта:

  • На мелких часто предпочитают короткие имена. Лаконично же, не напряжно.
  • На больших юзают более длинные («descriptive») имена. Потому что когда у тебя будет десять гридов, ты усрешься в голове контекст переключать. Или когда видишь код впервые, по короткому имени сложнее въехать.

Это все конечно ооочень приблизительно.


Grid[Component] - IMHO тут другой нюанс, использование слов паразитов в названии (не имеющих внятного смысла). Если слов можно выкинуть без потери смысла - надо выкидывать или менять на другое. Примерно тот же косяк что data_counter вместо counter.

https://www.thesaurus.com/browse/truncate - я юзаю тезаурус когда надо слово подобрать и фантазии не хватает.

Vit ★★★★★
()
Последнее исправление: Vit (всего исправлений: 1)
Ответ на: комментарий от Legioner

Я бы разделял чтение и запись. Желательно чтобы код читался везде, в т.ч на гитхабе. А при набивке желателен автокомплит и т.п. Это никак не связанные между собой вещи.

Выше описывались проблемы с набивкой, это «запись» а не «чтение».

Vit ★★★★★
()
Ответ на: комментарий от Marvel

Да хороший поинт, переосмыслил название типов, все равно оставил components::Grid, т.к. это сетка.

Int64 ★★★
() автор топика
Ответ на: комментарий от Nervous

Да, спасибо, оставил неймспейсы, так и удобнее пользоваться, не приходится по сто раз импортировать разные типы, а системы пока что вообще сделал функциями и теперь не systems::Grid, а systems::update_grids(...) и systems::render_grids(...).

Int64 ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.