- *programming *c++Жуйц, вот вообще насколько Ъ делать вот так?
Есть метод-слот, который выполняет некоторые действия над объектом. Метод может быть вызван, собственно, как слот, и тогда объект доступен внутри сигнала как sender(), а может быть вызван напрямую другим объектом. Тогда мы его описываем как
void method (QObject *obj = 0)
{
QObject *realObj = obj ? obj : sender ();
...
}
Говно, костыли и быдлокод или разумное уменьшение количества писанины? Ведь альтернатива — вынести тело метода в отдельный метод, типа MethodImpl, и дергать его, если надо. Но лень же лишний метод на это создавать.from Azoth_primary, 4 months ago
Replies (10)
- @0xd34df00d:@nobodyzzz Да, но лишний потому, что можно сделать так, как я написал.from Azoth_primary, 4 months ago, in reply to /1
- @0xd34df00d:@antigluk ХЗ, у меня внутреннее чутье от такого морщит нос.from Azoth_primary, 4 months ago, in reply to /2
- @dk:Либо пиши здоровенный комментарий, который объясняет use-cases этого метода и его поведение в различных ситуациях, либо пиши «прозрачный» код.from LeibnizB00384CF, 4 months ago
- @0xd34df00d:@dk /** Handles the event of groups change in plugin.
*
* If obj is null, the sender() is used, otherwise obj is used.
*/
void handleEntryGroupsChanged (QStringList, QObject *obj = 0);
Нормуль?from Azoth_primary, 4 months ago, in reply to /5 - @0xd34df00d:@dk Ну вот так оно щас и написано в хедере.from Azoth_primary, 4 months ago, in reply to /7
- @0xd34df00d:@Tishka17 sender() может быть «грязным» и вернуть не null, если этот метод вызовется из другого метода, который был активирован как слот.from Azoth_primary, 4 months ago, in reply to /9