Jump to content

    
Sign in to follow this  
juvf

Библиотеки для STM32

Recommended Posts

Но это все же пустая дискуссия, все одно каждый останется при своем мнении и при своем стиле :)

Ну отчего же "останется". Лично у меня за годы стиль менялся под влияним писанного и читанного. При этом догмы в общем нет. Есть обшие тяготения, например, имена функций все явно больше маленькими буквами без разделителей, если это не группа функций. Переменные напротив все с подчеркиваними, поскольку очень люблю структуры, а для структур разделители явяются естественными. Соответственно и просто переменные смотрятся на таком фоне гармоничнее с подчеркиваниями. Заглавные буквы когда то использовал в именах струкур, но перестал за в общем то ненадобностью. Константы и константные выражения, само собой заглавными. Макросы когда то давно тоже именовал заглавными, но перестал за ненадобностью.

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

 

Share this post


Link to post
Share on other sites
я говорю что слитно не удобно

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

Share this post


Link to post
Share on other sites
При этом догмы в общем нет. Есть обшие тяготения, например, имена функций все явно больше маленькими буквами без разделителей, если это не группа функций. Переменные напротив все с подчеркиваними, поскольку очень люблю структуры, а для структур разделители явяются естественными. Соответственно и просто переменные смотрятся на таком фоне гармоничнее с подчеркиваниями. Заглавные буквы когда то использовал в именах струкур, но перестал за в общем то ненадобностью. Константы и константные выражения, само собой заглавными. Макросы когда то давно тоже именовал заглавными, но перестал за ненадобностью.

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

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

Короче, прошел через это, поплевался и удалил кучу лишних правил. После этого все стало значительно проще.

Читаемость кода не пострадала, а даже наоборот - считаю лишним "кодировать" в названии объекта его принадлежность к определенной "рассе", другие нынче времена :)

Насчет макросов тут я не буду спорить, скорее всего сам уйду на именование макросов, как обычных методов классов (функций), т. к. любой макрос может стать функцией и наоборот.

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

Впрочем, время покажет ))) Я тоже "эволюционирую" )))

 

 

Не терплю органически "венгерского" стиля именования. В остальном в общем всеяден.

Аналогично! До тошнотиков не выношу, когда в название переменной с какого-то перепугу вносят ее "рассовую" принадлежность :wacko:

Абсолютно убежден, что оооочень значительно ухудшает читаемость кода - приходится при изменении типа этой переменной ВЕЗДЕ менять ее название - "мартышкин" труд, иначе не назовешь ))

 

 

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

Абсолютно солидарен! Чистым кодом пользоваться гораздо приятнее )))

Share this post


Link to post
Share on other sites
Кмк эта возможность писать слитно слишком слишком демонизируется. Этот вариант написания один из возможных, т.е. программист может выбрать его там где он будет уместен. Например isalpha, в качестве локальной переменной - почему бы и нет.
А потому что в английском язые нет слова "isalpha", а есть два слова Is или Alpha, поэтому логичнее изменить на "isAlpha", is_alpha или IsAlpha.

Английский Язык Предусматривает Написание Каждого Слова Предложения Заглавными Буквами, а русский - нет.

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

 

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

К тому же как только переменная меняет области видимости (локальная - глобальная - поле класса), ее ВЕЗДЕ приходится переименовывать.

Какой в этом смысл? Зачем в название переменной вносить область ее видимости?

Мне кажется более логичным создать ее экземпляр непосредственно перед тем местом, где она используется (в стеке).

В С++ такое возмоно, но не в С.

Например:

for (int index = 0; ....)
{
...
}

Если в коде опять будет цикл, можно создать переменную с точно таким же именем, но это будет совсем ДРУГАЯ переменная,

что заставляет узко локализовать область использования временных (локальных) переменных, а не раскидывать их по всему коду функции,

особенно, если она вся не влазит на экран.

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

 

 

 

 

 

 

 

очевидно же - у класса есть конструкторы/деструкторы и private/protected области видимости =)

В структуре все поля, если не указано public/private/protected, являются по-умолчанию public, а в классе - private.

Это - единственное отличие между структурой и классом. В остальном они отличаются лишь названием :biggrin:

 

Это как это? :wacko:

Структура у меня используется лишь как структурированное хранилище данных (часто упакованы с соотв. атрибутами типа packed), т.е. ТОЛЬКО ПОЛЯ,

а класс - уже что-умеет делать сам, т.е. у его есть еще и МЕТОДЫ.

Я делю их между собой именно так, хотя прекрасно знаю, чем они отличаются на самом деле (см. выше).

Структур (struct) в коде у меня очень мало и почти все они имеют крайне локализованный характер, т. е. обладают очень узкой областью видимости. Насколько это возможно.

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

 

Небольшое дополнение насчет макросов и замен "магических" чисел.

Поскольку в коде у меня нигде нет глобальных объектов, ни одного,

то это создает некоторые сложности с отказом от моего правила - макросов и замен "магических" чисел - БОЛЬШИМИ_БУКВАМИ_С_ПОДЧЕРКИВАЕНИЕМ.

Т. е. в моем случае такие "дефайны" имеют исключительно глобальный смысл и каждый объектный модуль при желании может их использовать.

Таким образом получается, что я как бы намекаю (сам себе, разумеется), что речь идет не об объектах, а лишь заменах (дефайнах), которые при компиляции (после препроцессора) станую обычными числами и выражениями.

Поэтому сильно сомневаюсь, что макросы и замены буду именовать иначе, чем так, как сейчас ))

 

 

 

 

Share this post


Link to post
Share on other sites
очевидно же - у класса есть конструкторы/деструкторы и private/protected области видимости =)

К Вашему сведению: у структуры - тоже. :laughing:

Единственное отличие между ними (насколько я знаю): у структуры права доступа по умолчанию - "public", у класса - "private".

 

PS: О! Уже опередили.... :(

Share this post


Link to post
Share on other sites
В С++ такое возмоно, но не в С.

Например:

for (int index = 0; ....)
{
...
}

Вы про C99 не слышали?

можно создать переменную с точно таким же именем

Вы уверены что это можно назвать хорошим стилем? :)

Структура у меня используется лишь как структурированное хранилище данных (часто упакованы с соотв. атрибутами типа packed), т.е. ТОЛЬКО ПОЛЯ,

Это называется plain old data (POD)

Share this post


Link to post
Share on other sites
приходится при изменении типа этой переменной ВЕЗДЕ менять ее название - "мартышкин" труд, иначе не назовешь ))
я тоже не поддерживаю в имени переменной её тип (как например в том же гугл сайл), но переименовать переменную везде... так это вроде в пару кликов. рефакторинг ещё ни кто не отменял.

 

Share this post


Link to post
Share on other sites
я тоже не поддерживаю в имени переменной её тип (как например в том же гугл сайл), но переименовать переменную везде... так это вроде в пару кликов. рефакторинг ещё ни кто не отменял.

+1. Современные текстовые редакторы - это благо. Тип переменной встраивали в её название в каменном веке, когда текстовые редакторы ещё недалеко ушли от карандаша и ручки. Сейчас объявление переменной вместе с её типом искать не приходится - оно само находится.

Share this post


Link to post
Share on other sites
Вы про C99 не слышали?

Обратите внимание в какой теме и в каком разделе мы все это пишем ... ;)

C-исходник в подавляющем числом компиляторов под МК не поддерживает С99, поэтому мы не можем где ни попади объявлять локальные переменные.

И, честно говоря, не вижу смысла строчить в С или С99, когда есть плюсы. Но это - по-ходу уже другая тема )))

 

Вы уверены что это можно назвать хорошим стилем? :)
Если цикл занимает всего пару строк, а не 10 страниц кода, то никакого криминала в этом не вижу ))

Само тело цикла удобно использовать для ограничения зоны видимости его итератора, главное - давать осмысленные имена, чтобы они не вступали в конфликт с именами других объектов, фигурирующих в теле цикла.

 

Это называется plain old data (POD)

Да, это именно оно ))

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

А все остальные сущности - class. Даже для примитивных, т. е. не имеющих своих методов (но в будущем, возможно, будут).

 

рефакторинг ещё ни кто не отменял.

Автоматизация "мартышкиного" труда еще не отменяет самого факт такого труда )))

К тому же даже в данный момент далеко не все среды (тоже обратите на тему и раздел где мы сидим) поддерживают такие вещи по ВСЕМУ проекту.

Речь в данном случае не про внешние редакторы, а целиком про среды проектирования (Keil, Eclipse, Crossworks и др).

Edited by Forger

Share this post


Link to post
Share on other sites
Автоматизация "мартышкиного" труда еще не отменяет самого факт такого труда )))

К тому же даже в данный момент далеко не все среды (тоже обратите на тему и раздел где мы сидим) поддерживают такие вещи по ВСЕМУ проекту.

Речь в данном случае не про внешние редакторы, а целиком про среды проектирования (Keil, Eclipse, Crossworks и др).

 

В Eclipse это Alt + Shift + R с древних времен и да ПО ВСЕМУ проекту...

Share this post


Link to post
Share on other sites
тоже обратите на тему и раздел где мы сидим
так то я ТС ))) и тема не про стиль кода, а про библиотеки для стм32 ))

 

Речь в данном случае не про внешние редакторы, а целиком про среды проектирования (Keil, Eclipse, Crossworks и др).
в Eclipse этo Alt+Shift+R. На базе эклипса много сред (кокос, CCS, NIOS-IDE). Вообще эклипс - рулит. Остальные среды .... но это уже новый холивар )))

Да даже в IAR-e, со своим редактором, застрявшим в 90-х годах, можно сделать поиск с заменой в пару кликов. Ни какого мартышкиного труда ))

 

ps что ещё вкусного в эклипсе - автоматическое форматирование кода. берёшь чужой код... там фигурные скобки не так как у меня стоят, отступы не те, пробелы не так, выравнивание schitch/case/break по другому. жамкаешь ctrl+shift+F - весь файл перефарматируется в мой стиль (только естественно стиль должен быть настроен и/или подключен. я один раз стиль настроил и всегда его подключаю, во всех эклипсонаследовательных ИДЭ)

Share this post


Link to post
Share on other sites
В Eclipse это Alt + Shift + R с древних времен и да ПО ВСЕМУ проекту...

"пук в лужу" с моей стороны - не сижу в эклипсе (пора исправлять это ...), привел его в пример фактически наугад ))

 

 

Ни какого мартышкиного труда )) ..... что ещё вкусного в эклипсе - автоматическое форматирование кода. берёшь чужой код...

Под мартышкиным трудом понимаю переделывание своего кода, а не чужого.

Share this post


Link to post
Share on other sites
я тоже не поддерживаю в имени переменной её тип (как например в том же гугл сайл)

А ни разу не сталкивались, когда при очередной модификации кода (через 10*N месяцев) в 16 бит переменной (поле структуры) нечаянно пытались освоить биты >16?

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this