Здравствуйте, Plutonia Experiment, Вы писали:
M>>>Преимущества длинных идентификаторов так же очевидны, как и их недостатки. Что делает CreateSemaphore понятно без документации.
R_M>>Это преимущество актуально для тех, кто не удосужился эту документацию прочитать, а тем, кто по 50 раз в день набирает CreateSemaphore, это не актуально. Не факт, что semget удачное название, но и CreateSemaphore тоже не самый хороший вариант.
PE>CreateSemaphore — понятно без контекста, что делает. Semget — тож понятно, но только юниксоиду.
PE>А что скажете про
PE>PE>tee()
PE>
PE>Это функцию мало кто знает, потому, что она есть только в Xenix. Но вот догадайтесь по имени, что она делает ?
Я её тоже не знаю, потому что с Xenix не знаком. И догадываться не собираюсь, нормальные программисты знают базовые функции той системы с которой работают, а не пишут наугад. Если возникают проблемы то смотрят reference по данному вопросу, а далее по ссылкам соответсвющие функции. А программирование, где если нужно сделать семафор, думают типа: мне нужен семафор, напишу-ка я что-нибудь типа CreateSemaphore — ой, надо же, работает, трудно назвать программированием.
PE>В случае с WinAPI документация зачастую не нужна. Нужно запомнить несколько вещей.
Программы, писанные теми, кто не читал документацию, особенно секции "remarks" обычно перестают работать уже на следующей версии системы, неговоря уж о непереносимости между 9x и NT.
PE>Есть несколько групп функций и каждая группа именуется по своему.
PE>Оъекты синхронизации — всегда в начале LPSECURITY_ATTRIBUTES, в конце — имя.
PE>Это мутексы, евенты и семафоры.
А вот недавно пришел к выводу, что порядок аргументов неудобный, т.к. как LPSECURITY_ATTRIBUTES используются редко, особенно, для локальных(неименованных) объектов, а потому для них было бы выгодно использовать параметры по умолчанию, типа EXTERNC HANDLE __declspec(dllimport) sem_create(LONG lInitialCount, LONG lMaximumCount, LPCTSTR lpName = NULL, LPSECURITY_ATTRIBUTES lpSemaphoreAttributes = NULL).
PE>Для оконных оъектов в начале всегда передается HWND.
PE>В структурах те же самы принципы организации. Имена всегад читаемые и понятные всем.
Залезь поглубже в структуры для функций печати, там все граздо хуже, например вместо lp используется p.
M>>>Причём, при большем количестве идентификаторов, большей сложности кода, преимущества становятся важнее.
R_M>>Преимущество данного идентификатора при любом не очевидны, т. к. CreateSemaphore — одна из основных функций системы, такие вещи нужно знать на память.
PE>Ее знать не нужно. Использовать ее приходится достаточно редко. А параметры замоминать не нужно.
Хоть CreateSemaphre используется реже, чем CreateEvent или CreateMutex знать об её существовании нужно четко, так как это один базовых элементов межпроцессного взаимодействия. Параметрызапоминать не нужно, они вместе с именами констант сами запоминаются при постояноой работе.
PE>Подумай на досуге, какие параметры могут быть у функции tee()
Какок смысл об этом думать, если я не знаю зачем она нужна.