 |
Общие вопросы вопросы не попадающие ни в один из доступных разделов |
03.11.2019, 15:41
|
#166
|
[object Object]
Регистрация: 01.08.2008
Адрес: Планета Земля
Сообщений: 4,189
Написано 2,369 полезных сообщений (для 6,565 пользователей)
|
Ответ: Проблемы разработки от EvilOkta
Сообщение от EvilOkta
Когда кол-во классов становится большим становится сложно в голове удерживать какие методы они реализуют, интерфейсы наследуют и какими свойствами обладают.
|
Мне кажется, что тут скорее проблема проектирования и никакие документации не помогут. Стоит посмотреть на SOLID,
как на некий набор общепринятых практик по написанию легко поддерживаемого кода.
Естественно всё и сразу не надо пытаться исполнять, начать можно с "SRP",
а "DI" оставить до лучших времён, когда он действительно тебе будет нужен.
__________________
Retry, Abort, Ignore? █
AMD Ryzen 7 3800X 4.3Ghz; 64Gb ram; Nvidia Geforce 1070Ti
AMD Ryzen 7 1700X x8 3.4Ghz; Radeon RX 570
AMD Athlon II x4 2.6Ghz; 8Gb ram; Nvidia Geforce GTX 750 Ti
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
05.11.2019, 05:04
|
#167
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,508
Написано 2,963 полезных сообщений (для 5,252 пользователей)
|
Ответ: Проблемы разработки от EvilOkta
Сообщение от EvilOkta
Спасибо ) энтерпрайз дорого (я ж не зарабатываю программированием), идея с partial интересная. Параллельно в Excel заношу публичные методы классов и их сигнатуры, на всякий случай.
|
Есть полезное окно, в котором всю структуру проекта можно посмотреть. Называется Обозреватель объектов (Вид => Обозреватель объектов). Там все можно подсмотреть. А если есть XML комментарии, то и их можно посмотреть в удобном формате.
Сообщение от Антихрист
Конкретно к этому примеру - выглядит не очень. В первую очередь за счет цикла с сравнением строк внутри гетера. Добавь одну переменную и закэшируй туда индекс.
protected static readonly string[] Monthes = { "января", "февраля", "марта", "апреля", "мая", "июня", "июля", "августа", "сентября", "октября", "ноября", "декабря" };
protected byte monthIndex; protected string monthName;
protected byte MonthIndex { get => monthIndex; set { if (value <= 0 || value > 12) return; monthIndex = (byte) (value - 1); monthName = Monthes[monthIndex]; } }
protected string MonthName => monthName;
|
Вообще хранить название месяца в отдельной переменной не надо. Зачем память тратить. Используй свойство, если есть индекс.
protected string MonthName => Mounthes[monthIndex];
или
protected byte monthIndex = -1; protected string MonthName => monthIndex == -1 ? null : Mounthes[monthIndex];
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
05.11.2019, 20:23
|
#168
|
Разработчик
Регистрация: 20.01.2007
Сообщений: 482
Написано 180 полезных сообщений (для 409 пользователей)
|
Ответ: Проблемы разработки от EvilOkta
Сообщение от pax
Есть полезное окно, в котором всю структуру проекта можно посмотреть. Называется Обозреватель объектов (Вид => Обозреватель объектов). Там все можно подсмотреть. А если есть XML комментарии, то и их можно посмотреть в удобном формате.
Вообще хранить название месяца в отдельной переменной не надо. Зачем память тратить. Используй свойство, если есть индекс.
protected string MonthName => Mounthes[monthIndex];
|
Согласен, если monthIndex не может быть изменен в другом месте выйдя за рамки массива.
protected byte monthIndex = -1;
protected string MonthName => monthIndex == -1 ? null : Mounthes[monthIndex];
|
Вроде С# не позволит впихнуть в byte отрицательное значение.
Как вариант
protected byte? monthIndex = null;
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
07.11.2019, 17:52
|
#169
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,508
Написано 2,963 полезных сообщений (для 5,252 пользователей)
|
Ответ: Проблемы разработки от EvilOkta
Сообщение от Антихрист
Вроде С# не позволит впихнуть в byte отрицательное значение.
Как вариант
protected byte? monthIndex = null;
|
Да, писал прям сюда, поэтому ошибся. Можно sbyte в данном случае использовать.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
07.11.2019, 18:48
|
#170
|
Знающий
Регистрация: 31.07.2008
Сообщений: 313
Написано 107 полезных сообщений (для 228 пользователей)
|
Ответ: Проблемы разработки от EvilOkta
Сообщение от Антихрист
Согласен, если monthIndex не может быть изменен в другом месте выйдя за рамки массива.
|
Хорошая идея! Можно сделать, это действительно лучше
Сообщение от pax
Есть полезное окно, в котором всю структуру проекта можно посмотреть. Называется Обозреватель объектов (Вид => Обозреватель объектов). Там все можно подсмотреть. А если есть XML комментарии, то и их можно посмотреть в удобном формате.
|
Вот! Как раз таки подобное я искал, спасибо!
Сообщение от Randomize
Мне кажется, что тут скорее проблема проектирования и никакие документации не помогут. Стоит посмотреть на SOLID,
как на некий набор общепринятых практик по написанию легко поддерживаемого кода.
Естественно всё и сразу не надо пытаться исполнять, начать можно с "SRP",
а "DI" оставить до лучших времён, когда он действительно тебе будет нужен.
|
SOLID только начал разбираться, но мне уже не понравилось "Каждый класс должен иметь одну и только одну причину для изменений" - у меня в голове это выглядит как огромная куча классов, каждый из который использует единственный публичный метод, который делает что-то. Я больше привык когда класс описывает поведение в заданных рамках, чтобы не нарушать принципа бритвы Оккама.
Чтобы не заниматься ответом на цитаты, вопрос для понимания - в каком формате лучше использовать и хранить БД в Unity?
Или вообще без разницы?
upd конкретизирую вопрос - для проекта нужно подкачивать массивы информации в текстовом виде, в чем их лучше хранить и динамически при необходимости загружать - csv, txt, xml, xls и т.п.?
Последний раз редактировалось EvilOkta, 10.11.2019 в 08:29.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +1, время: 20:23.
|