The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Выпуск пакетного менеджера Pacman 5.0"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Подсказка: Для слежения за появлением новых сообщений в нити, нажмите "Проследить за развитием треда".
. "Выпуск пакетного менеджера Pacman 5.0" –1 +/
Сообщение от Аноним (-), 02-Фев-16, 21:57 
> не передергивайте.

Ну давайте расскажу, как _я_ воспринимаю этот код.

30 секунд просмотра функции, и я понимаю следующее: f обозначает filename, i - instance, ret - возвращаемое значение. Имена a и b ничего не обозначают (но по коду далее видно, что они хранят длины соответственно первой и второй незаменяемых частей юнита).

Сам я systemd не пользовался, поэтому не знал, для чего нужна @ в именах юнитов. Добавим сюда ещё 5 минут гугления, какой формат имеет имя юнита, и чтения (точнее, чтения первого абзаца, содержащего символ @) http://man7.org/linux/man-pages/man5/systemd.unit.5.html (тот, кто правит код systemd имхо должен знать ту часть, что необходима для понимания данного фрагмента).

Теперь также ясно, что e - extension, p - либо part (заменяемая часть, типа tty3 с ведущим символом @), либо pointer, s - просто string, так же как циклах принято делать итерацию по i (от integer).

Из имени функции я предполагаю, что она должна заменять инстанс юнита f (на который указывает p+1) инстансом i.

"s = new" - выделение памяти.

А пример со вложенным вызовом mempcpy взят из man mempcpy и может считаться стандартным.

Возможно, я не прав и сказывается собственный сишный опыт, но для меня понять, что делает конкретно озвученная ранее строка, не проблема. При этом мне не надо постоянно переходить по разным методам, как это принято в java и c++ , у меня вся функция помещается на одном экране. И лично для меня идентификаторы p и e выглядят более "различными визуально", чем, например, "unit_name_part и unit_name_ext".

Я бы сказал, что это пример каноничного C, где идентификаторы сокращаются насколько это возможно (но не меньше), по этой же причине при итерации вы пишете "for (i=0; i<10; i++)", а не "for(index=0; index<10; index++)".

Ответить | Правка | Наверх | Cообщить модератору

Оглавление
Выпуск пакетного менеджера Pacman 5.0, opennews, 31-Янв-16, 00:34  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру