dememax: (ночь)
[personal profile] dememax
...и один из мировых лидеров производителей SoC на ARM предлагал добавлять в код ядра линукс такое:
enum enable_disable_t {
	DISABLE,
	ENABLE
};
https://gitorious.org/medium_platform/linux/source/69a118f042a7b05b831e07348e0a8ed3142f3923:include/media/davinci/dm365_ipipe.h#L1164
(это я взял рафинированный пример, где ни добавить, ни убавить; в последних версиях ядра, как можно догадаться, этот тип упразднён с заменой на bool)

P.S.: Дорогие френды! Обескуражен реакцией на публикацию.
На просьбу о помощи - никто не отреагировал (по крайней мере, в он-лайне), а тут, на какое-то снобистское ворчание - уже трое высказали своё несогласие с посылкой поста.
Видимо, всё же я - сошёл с ума... :-(
Мне и вправду сейчас на испытательном сроке - нелегко.

Date: 2014-12-17 12:59 am (UTC)
From: [identity profile] juan-gandhi.livejournal.com
Э, хм, и чо? Я не вижу, как это может быть заменено булевым.
From: [identity profile] juan-gandhi.livejournal.com
Оно тем не подходит, что с такой же легкостью может заменено противоположными значениями.

Идиомы plain C уже давно проехали; это вроде арифмометра что-то.
From: [identity profile] juan-gandhi.livejournal.com
Да неужели безымянные назначения лучше?

Нет, я, конечно, люблю джаваскрипт; но и там лучше имена дать вещам, чтоб знать, с чем имеешь дело.

Date: 2014-12-17 05:21 am (UTC)
From: [identity profile] fatoff.livejournal.com
В чём значимость этого? Мне в Linux понравилась поддержка нового POSIX epoll, в последние годы ввели. Хорошо для асинхронного чтения устройств. select несколько слабоват...
Edited Date: 2014-12-17 05:24 am (UTC)

Date: 2014-12-17 09:57 am (UTC)
From: [identity profile] rezdm.livejournal.com
Абсолютно нормульно. Как раз пихать булеан по любому поводу — вот это плохо.
Сейчас enable/disable, потом появится какой starting или shut_down, и где-то надо передать unknown.
Уж проще один раз завести енам или маску и не париться.
From: [identity profile] fatoff.livejournal.com
А, может collision выйти с каким-нибудь #define ENABLE 0, ясно.
From: [identity profile] fatoff.livejournal.com
Такая фигня на рядовом код-ревью прибивается. А тут, вона, событие. :)
From: [identity profile] rezdm.livejournal.com
Именно, что было enable_disable_t
Потом его переименовать в status_t и расширить, Вместо протягивания очередного булеана. Именно так поддерживать и расширять функциональность.

Аргумент про пространство имён -- принимаю, да.
From: [identity profile] rezdm.livejournal.com
Макс, не переросло, но есть шанс, что перерастёт. Сегодня инейбл/дизейбл, завтра инейбл, дизейбл, анкноун, форбиден. Переименовать класс/структуру в современных IDE -- дело минуты.

Нечитаемый, нерасширяемый булеан -- нехорошо. Маска, енам -- хорошо. Это как мыть руки перед едой.

Дальше уже проблемы языка (пространства имён).
From: [identity profile] madf.livejournal.com
Я думаю тут более правильно придраться к названиям. Во-первых название типа - не отображает смысл этого типа. Если это состояние девайса то пусть будет device_state_t, а не эта абстракция. Во-вторых название констант. Таких имен как ENABLED/DISABLED - куча. А в C нет пространств имен, и все сломается вмиг после подключения какого-то совершенно невинного заголовочного файла. У меня, например, была ситуация когда константа цвета из GUI из нашего проекта сломала компиляцию когда я взял топологическую сортировку из Boost. Аналогичная лажа есть в Google test Framework - у них там константы FAIL и SUCCEED.

А про bool я считаю что его нужно использовать только там где у нас логическое выражение. Состояние никак не может быть логическим выражением и bool тут не место. Кстати именно по этому я предпочитаю писать if (a == 0) а не if (!a).
From: [identity profile] rezdm.livejournal.com
Макс, я такие штуки делал в комманд лайне. И делал ещё и в старых студиях. И ещё видел, как пипль фигачит в вие/емаксе. Это уже лет 10 точно, как не проблема.
From: [identity profile] rezdm.livejournal.com
Я бы ещё добавил. Я аналогично писал if (0 == a), а с некоторых пор стал писать типа if(is_some_condition(a)) { ... }

Так ещё читабельнее. Проверка, скажем какой маски или енама так становится ещё намного читабельнее и расширяемее. Пусть там унутри будет простая проверка типа return 0==a; для начала, пусть. Хороший компайлер один хрен соптимизирует.

Извиняюсь за некропост

Date: 2015-10-07 07:00 pm (UTC)
From: [identity profile] anonim-legion.livejournal.com
Ну откуда у бородатых свитерков IDE. У них емакс, и rename refactoring в ём отсутсвует.

Profile

dememax

May 2023

S M T W T F S
 123456
78910111213
14151617181920
21 2223 24252627
28293031   

Most Popular Tags

Page Summary

Style Credit

Expand Cut Tags

No cut tags
Page generated Mar. 3rd, 2026 11:55 am
Powered by Dreamwidth Studios