HLFX.Ru Forum
Показать все 53 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Флуд (https://hlfx.ru/forum/forumdisplay.php?forumid=11)
-- Грамотность кода (https://hlfx.ru/forum/showthread.php?threadid=5351)


Отправлено Дядя Миша 12-09-2019 в 10:28:

KiQ ты движок-то свой доделал, например?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено KiQ 12-09-2019 в 10:57:

Дядя Миша он у меня в вечном WIP, потому что на нем я обучаюсь чему-то новому) но, например, я выделил в отдельную независимую либу UI от него, которую можно юзать в OpenGL, в частности там подгрузка ttf шрифтов и в принципе менеджер ресурсов, удобная работа со строками, плюс разные полезные утилиты. Правда в итоге я понял, что все это и так есть в libGDX, но лично для меня выхлоп разработки этого движка - а я напомню, что это путь от прототипа на J2ME (проще говоря на мобилках) до текущего прогресса - весьма и весьма значительный. Я научился писать грамотный код, изучил основы 2D и 3D графики, GLSL, различные архитектуры, научился грамотно использовать third party решения в сочетании со своим кодом и т.д. Сейчас вот начал делать что-то типа VHE для libGDX. Ну а в планах RPG с оригинальным сеттингом, который я разрабатываю уже лет пять. Хотя вообще, я изначально, да и сейчас хотел ее делать на ксаше, но маппер и моделлер из меня так себе. Больше по кодингу и концепту (не такому концепту, который из трех слов типа "Вот хочу примерно так", а именно по точному, проработанному, ибо я параллельно развиваю свою космогонию в рассказах, а игра планировалась как раз в этом сеттинге)

__________________
-Brain is dead-


Отправлено Дядя Миша 12-09-2019 в 13:24:

Цитата:
KiQ писал:
Я научился писать грамотный код

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено thambs 12-09-2019 в 13:58:

Цитата:
NetBeans

Ужос какой...

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено KiQ 12-09-2019 в 14:09:

Цитата:
thambs писал:
Ужос какой...

ну когда кодил под ксаш или хлсдк юзал и шестую студию. А так на нетбинсе еще со времен разработки под мобилы, не считая периода, когда я кодил на мобиле под мобилу (J2ME SDK Mobile, ставилось как ява приложение, позволяло прогать прям на телефоне). Попробовал IntelliJ IDEA - не понравилось. В чем суть претензии в целом - не понял, поясни

__________________
-Brain is dead-


Отправлено thambs 12-09-2019 в 14:12:

KiQ

Цитата:
NetBeans ... IntelliJ IDEA ... В чем суть претензии в целом - не понял

Т-т-т-т-о-о-о-р-м-о-о-з-и-т-т-т же!

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено KiQ 12-09-2019 в 14:14:

Цитата:
Дядя Миша писал:

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

Добавлено 12-09-2019 в 17:14:

Цитата:
thambs писал:
KiQ

Т-т-т-т-о-о-о-р-м-о-о-з-и-т-т-т же!


Опять же абстрактное высказывание. Тормозит что? Нетбинс? Ну да, бывает. Ну так и айдия тормозит, да и VC бывает тормозит. Java тормозит? Ну тоже бывает, но в целом уже давно стереотип о секундах в кадр преодолен.

__________________
-Brain is dead-


Отправлено Дядя Миша 12-09-2019 в 15:38:

Грамотный код вообще хорошее определение. Я бы наверное воздержался от оценки. Это потом уже спустя поколения потомки оценят.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено XaeroX 12-09-2019 в 17:20:

Максимально грамотный код - это его отсутствие.
Чем меньше кода - тем меньше багов, тем быстрее сборка, и тем больше тестов проходит. Кайф же!

__________________

xaerox on Vivino


Отправлено KiQ 12-09-2019 в 20:27:

Дядя Миша это относительное определение, т.е. я сравниваю тот код, что писал раньшы и который пишу сейчас

__________________
-Brain is dead-


Отправлено FiEctro 13-09-2019 в 05:57:

Никогда не понимал этих заморочек, нечитабельные места можно всегда разжевать комментариями. А красивый код работает обычно где то в сферическом вакууме, в действительности обязательно будут какие то исключения из ситуации которые придётся подпирать костылями. Так же чисто по моему ИМХО на наведение этой красоты уходит слишком много времени, а гибкость как мне кажется такого кода уменьшается.

__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!


Отправлено Дядя Миша 13-09-2019 в 06:06:

FiEctro ты если с этим кодом месяца три не поработаешь, ты уже напрочь забудешь что там и как было. Так что это в первую очередь для себя, чтобы можно было продолжать работу, а не гадать что я там прошлый раз такого написал. Ну и красота понятие относительное. Для меня красота кода в первую очередь это отсутствие лишних движений, избыточности.

Потому что типичная ситуация: написан код под определённые условия. Дальше надо добавить новый функционал. Этот функционал в виде новых условий и вызовов распихивается по быстрому везде, лишь бы работало. Потом, когда заработает это всё надо отрефакторить. Вот на это обычно забивают и читабельность постепенно падает. В идеале надо писать так, чтобы потом не надо было ничего добавлять, но это редкость. Заранее никогда не знаешь, что потом понадобится.

Добавлено 13-09-2019 в 09:06:

ЗЫ. у этой медали есть и обратная сторона - некоторые товарищи стараются писать код таким образом, чтобы он потом вообще под любые условия подходил. Тогда он становится нечитабельным по дефолту, вот как раз из-за своей универсальности. И ЧСХ, универсальность там обычно мнимая.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено XaeroX 13-09-2019 в 06:22:

Цитата:
FiEctro писал:
в действительности обязательно будут какие то исключения из ситуации которые придётся подпирать костылями.

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

__________________

xaerox on Vivino


Отправлено Дядя Миша 13-09-2019 в 07:35:

Цитата:
XaeroX писал:
только на ночь домой отпускают

Но только тех, кто сегодня умеет смотреть в завтрашний день и знает, что время измеряется не в километрах

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено nemyax 13-09-2019 в 07:58:

Всех с тематическим праздником!


Отправлено XaeroX 13-09-2019 в 08:11:

nemyax
По такому случаю - отдельная тема:
https://hlfx.ru/forum/showthread.php?s=&threadid=5352

__________________

xaerox on Vivino


Отправлено FiEctro 13-09-2019 в 09:07:

Цитата:
XaeroX писал:
Программирование - оно же как армия, только на ночь домой отпускают.


Не обманывай, Адамикс вон умер как раз потому что его домой не отпускали.

__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!


Отправлено XaeroX 13-09-2019 в 09:09:

FiEctro
Так он за границей работал, а там паспорта отбирают.

__________________

xaerox on Vivino


Отправлено Дядя Миша 13-09-2019 в 09:32:

Цитата:
FiEctro писал:
Адамикс вон умер как раз потому что его домой не отпускали.

Стало быть судьба такая.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено nemyax 13-09-2019 в 11:33:

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


Отправлено Дядя Миша 13-09-2019 в 15:05:

Ну што. Я теперь про mutable знаю. Раньше как-то не использовал её.
Да и Ксерокс наверно тоже. Он традиционно любит модификатор volatile.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено XaeroX 13-09-2019 в 16:23:

Дядя Миша
mutable штука хорошая, но в 99% никак не применимая.
А volatile в, извиняюсь за каламбур, Volatile, используется ровно пять раз. И каждый раз тому есть очень веская причина.

__________________

xaerox on Vivino


Отправлено Дядя Миша 13-09-2019 в 16:33:

Цитата:
XaeroX писал:
mutable штука хорошая, но в 99% никак не применимая.

на собеседовании спросить могут!

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено XaeroX 13-09-2019 в 16:44:

Дядя Миша
На собеседовании, как ещё Мастер, емнип, писал, могут спросить и про то, можно ли написать

C++ Source Code:
int i[10] = { 0 }; printf( "%i", 2[i] + 4[i] );
что ж теперь?
P.S.: я лично этот вопрос обожаю задавать. И смотреть на вытягивающиеся лица юных и наивных ребят, которые пришли "нуяэто-вунивере-плюсы-учил-cin-cout-вотэтовсё".
P.P.S.: но в случае неправильного ответа никогда не учитываю его при окончательном решении. Ибо знать всякий треш люди не обязаны.

__________________

xaerox on Vivino


Отправлено nemyax 13-09-2019 в 16:57:

XaeroX
Вроде и первое и второе можно. В тех полутора книжках, что я читал, было про оба случая, кажется. Буит ноль.


Отправлено Дядя Миша 13-09-2019 в 17:11:

Цитата:
XaeroX писал:
можно ли написать

Очередной вопрос из разряда идиотских. Я еще помню как кто-то пихал в код http-ссылки и это тоже прекрасно компилилось. На кого это рассчитано?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено XaeroX 13-09-2019 в 17:20:

Дядя Миша
Ну почему же? Далее следует вопрос "а почему?"
И тут уже можно понять, понимает ли человек принципы адресации, рожь, овёс, вот это всё.

Цитата:
nemyax писал:
Вроде и первое и второе можно.

А что есть первое и что есть второе?

__________________

xaerox on Vivino


Отправлено nemyax 13-09-2019 в 17:29:

XaeroX
Первое — инициализация всех элементов массива указанным значением, если вбит размер. Второе — смещение[указатель] вместо указатель[смещение] (потому что компилятору пливать, *(указатель + смещение) или *(смещение + указатель)).


Отправлено XaeroX 13-09-2019 в 17:31:

Цитата:
nemyax писал:
потому что компилятору пливать, *(указатель + смещение) или *(смещение + указатель)

Ну вот ты знаешь, молодец. Но ты не поверишь...

__________________

xaerox on Vivino


Отправлено Дядя Миша 13-09-2019 в 17:56:

Цитата:
XaeroX писал:
понимает ли человек принципы адресации

Принципы адресации или реакцию конкретно этого компилятора?
Я допустим не понимаю что происходит при 2[n], да и где гарантия что везде это одинаково будет?

Добавлено 13-09-2019 в 20:56:

А если я допустим [] перегружу?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено XaeroX 13-09-2019 в 17:58:

Цитата:
Дядя Миша писал:
да и где гарантия что везде это одинаково будет?

Ну привет... В пункте 5.2.1 стандарта языка С++.

__________________

xaerox on Vivino


Отправлено Дядя Миша 13-09-2019 в 17:59:

XaeroX ага, все компиляторы на 100% соответствуют стандартам?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено XaeroX 13-09-2019 в 18:03:

Цитата:
Дядя Миша писал:
А если я допустим [] перегружу?

Ты его никак не перегрузишь для integral expression, поэтому тут без вариантов.

Добавлено 14-09-2019 в 01:03:

Цитата:
Дядя Миша писал:
ага, все компиляторы на 100% соответствуют стандартам?

Не все, но ты всегда можешь заслать донат багрепорт

__________________

xaerox on Vivino


Отправлено Дядя Миша 13-09-2019 в 18:03:

Если уж рассуждать за всякое. Меня вот например такие вещи прикалывают

C++ Source Code:
tw->openLeafNumbers[ tw->numOpenLeafs ] = node & ~(3 << 30);

Конечно так делать не следует, но оцените полёт мысли.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено XaeroX 13-09-2019 в 18:10:

Цитата:
Дядя Миша писал:
Конечно так делать не следует, но оцените полёт мысли.

Обнуляем два старших бита, всё ок.

__________________

xaerox on Vivino


Отправлено nemyax 13-09-2019 в 19:39:

Цитата:
Дядя Миша писал:
Конечно так делать не следует

А как следует-то? Так экономично.


Отправлено Дядя Миша 13-09-2019 в 20:09:

минус явным образом убирать.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено thambs 13-09-2019 в 23:18:

Цитата:
2[i] + 4[i]

Такое стоит пожалуй заносить в палату мер и весов идиотского синтаксиса. Давно знал, что стандарт разрабатывали люди с сексуальными девиациями, но чтоб настолько...
Цитата:
node & ~(3 << 30);

writeonly

//Вспомнился замечательный сайт https://cdecl.org/, что какбе намекает.

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено Дядя Миша 14-09-2019 в 07:25:

Цитата:
thambs писал:
Давно знал, что стандарт разрабатывали люди с сексуальными девиациями

Компилятор весьма вольно трактует некоторые вещи. Ему всё равно, вообщем-то.
Что навскидку вспомнил: модификаторы можно писать подряд несколько раз, например const const и это тоже соберётся.
Или const char *const foo.
Причём в первом случае будет варнинг, а во втором нет.

Добавлено 14-09-2019 в 10:10:

А всё потому что модификатор допускается объявлять как до типа, так и после.

Добавлено 14-09-2019 в 10:20:

И вот еще замечательный пример
C++ Source Code:
1
class foo
2
{
3
  my_class  *base;
4
  void Init( const my_class *base )
5
  {
6
    base = base;
7
  }
8
};

член класса останется непроинициализированным. Никаких варнингов не будет выдано.

Добавлено 14-09-2019 в 10:25:

Пример из p2csg
C++ Source Code:
static void EntityApplyTransform( mapent_t *src, mapent_t *dst, bool brushentity, bool external_map, vec_t yaw_offset = 0.0 )

Вызов
C++ Source Code:
EntityApplyTransform( mapent, mapent, true, false -90.0 );

Пропустил запятую. Никаких предупреждений.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено nemyax 14-09-2019 в 09:52:

Цитата:
Дядя Миша писал:
Никаких предупреждений.

Тут ведь разрешённое автоматическое приведение получилось. Статический анализатор может и предупредил бы, а компилятору-то что.


Отправлено XaeroX 14-09-2019 в 12:03:

Цитата:
nemyax писал:
а компилятору-то что.

Ну так-то не каждый день из булеанов вычитают флоаты.

__________________

xaerox on Vivino


Отправлено thambs 14-09-2019 в 12:06:

nemyax
Неявное приведение от более общего типа к менее общему — это прямо таки какая-то синтаксическая феерия.

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено XaeroX 14-09-2019 в 12:53:

thambs
Тут не совсем оно. Скорее, интересные особенности неявного приведения булевого типа.

__________________

xaerox on Vivino


Отправлено thambs 14-09-2019 в 13:08:

XaeroX
Так ведь два раза же, не? bool -> int -> bool, первое при вычитании, корректная операция, приводим тип выше по иерархии абстракций; а вот дальше получается, что "теряем точность" (в кавычках). ЕМНИП, а там разве нет флага компилятору что бы такое неявное приведение сверху-вниз запретить?

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено Дядя Миша 14-09-2019 в 14:34:

в крестах false это не макрос, а встроенное слово языка.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено XaeroX 14-09-2019 в 14:39:

thambs
В С/С++ сужение типа неявно не делается. Результат вычитания дабла из була всегда будет иметь тип дабл. А затем - согласно стандарту - полученный дабл преобразуется в бул. Это нельзя запретить, т.к. этот каст очень важен для поддержки всяких if-конструкций. В которых, как ты понимаешь, можно не только булы проверять на истинность.

__________________

xaerox on Vivino


Отправлено thambs 13-10-2019 в 12:43:

В тему грамотности кода, я просто оставлю это здесь.

Цитата:
Обнаруженная проблема поставила под сомнение корректность более 100 публикаций по химии, выводы в которых были сделаны на основе вычисленного скриптом химического сдвига. Точное число исследований, в которых использовался скрипт неизвестно, но публикация с его кодом процитирована в 158 работах. Авторам данных работ рекомендовано оценить корректность работы скрипта на применявшихся для вычисления операционных системах и провести перерасчёт для того, чтобы убедиться в правильности вычисленных значений. Инцидент является прекрасным примером того, что не только качество проведения эксперимента, но и корректность обработки полученных данных в программах, которые до этого повсеместно использовались, может повлиять на конечный результат.

А разгадка одна, UB и грязные функции — зло.

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено XaeroX 13-10-2019 в 12:50:

Цитата:
thambs писал:
А разгадка одна, UB и грязные функции — зло.

По-моему, там дело в том, что Python - зло.
С другой стороны, если подумать - кто эти научные программы всерьёз тестирует? Это ж не движок, чего париться, опубликовал и забыл.

__________________

xaerox on Vivino


Отправлено Crystallize 13-10-2019 в 13:56:

XaeroX а по астрономии, те которые прогнозируют положение небесных тел на определённый год?


Отправлено XaeroX 13-10-2019 в 14:43:

Crystallize
Да вон, даже в ПО нового "Боинга" баги нашли (после того как оно два самолёта, полных пассажиров, уронило). Чего уж говорить о python-скриптах, которые вычисляют химические параметры?

__________________

xaerox on Vivino


Отправлено nemyax 13-10-2019 в 18:51:

Цитата:
XaeroX писал:
По-моему, там дело в том, что Python - зло.

Не только в петоне есть платформозависимое поведение. К тому же документированное.

Цитата:
thambs писал:
грязные функции

Ну получи список файлов чистой функцией =)


Отправлено thambs 13-10-2019 в 19:31:

nemyax
Список файлов же не инпут или аутпут. На входе адрес (и маунтпоинт фс), на выходе — сортированный массив адресов. Идентичен вход — идентичен и выход.

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено nemyax 13-10-2019 в 19:34:

Создали файл, удолили другой — на входе не то. Волатильненько.


Временная зона GMT. Текущее время 17:15.
Показать все 53 сообщений этой темы на одной странице

На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024