- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
#define constuserColor "usercolor"
#define consttagColor "tagcolor"
#define constmsgColor "idcolor"
#define constQcolor "quotecolor"
#define constLcolor "linkcolor"
#define constUbold "userbold"
#define constTbold "tagbold"
#define constMbold "idbold"
#define constQbold "quotebold"
#define constLbold "linkbold"
#define constUitalic "useritalic"
#define constTitalic "tagitalic"
#define constMitalic "iditalic"
#define constQitalic "quoteitalic"
#define constLitalic "linkitalic"
#define constUunderline "userunderline"
#define constTunderline "tagunderline"
#define constMunderline "idunderline"
#define constQunderline "quoteunderline"
#define constLunderline "linkunderline"
#define constIdAsResource "idAsResource"
#define constShowPhoto "showphoto"
#define constShowAvatars "showavatars"
#define constWorkInGroupchat "workingroupchat"
#define constVersion "0.9.9"
class JuickPlugin : public QObject, public PsiPlugin, public EventFilter, public OptionAccessor, public ActiveTabAccessor,
public StanzaFilter, public ApplicationInfoAccessor
{
Q_OBJECT
Q_INTERFACES(PsiPlugin EventFilter OptionAccessor ActiveTabAccessor StanzaFilter ApplicationInfoAccessor)
public:
JuickPlugin();
virtual QString name() const;
virtual QString shortName() const;
virtual QString version() const;
virtual QWidget* options();
virtual bool enable();
virtual bool disable();
virtual void applyOptions();
virtual void restoreOptions();
virtual bool processEvent(int account, QDomElement& e);
virtual bool processMessage(int account, const QString& fromJid, const QString& body, const QString& subject);
// OptionAccessor
virtual void setOptionAccessingHost(OptionAccessingHost* host);
virtual void optionChanged(const QString& option);
//ActiveTabAccessor
virtual void setActiveTabAccessingHost(ActiveTabAccessingHost* host);
//ApplicationInfoAccessor
virtual void setApplicationInfoAccessingHost(ApplicationInfoAccessingHost* host);
virtual bool incomingStanza(int account, const QDomElement& stanza);
void elementFromString(QDomElement& body,QDomDocument e, QString& msg, QString jid, QString resource = "");
void nl2br(QDomElement& body,QDomDocument e, QString msg);
void addPlus(QDomElement& body,QDomDocument e, QString msg, QString jid, QString resource = "");
void addSubscribe(QDomElement& body,QDomDocument e, QString msg, QString jid, QString resource = "");
void addHttpLink(QDomElement& body,QDomDocument e, QString msg);
void addTagLink(QDomElement& body,QDomDocument e, QString tag, QString jid);
void addUserLink(QDomElement& body,QDomDocument e, QString nick, QString altText, QString pattern, QString jid);
void addMessageId(QDomElement& body,QDomDocument e, QString mId, QString altText,QString pattern, QString jid, QString resource = "");
void addUnsubscribe(QDomElement& body,QDomDocument e, QString msg, QString jid, QString resource = "");
void addDelete(QDomElement& body,QDomDocument e, QString msg, QString jid, QString resource = "");
void addFavorite(QDomElement& body,QDomDocument e, QString msg, QString jid, QString resource = "");
Краткость - сестра таланта... Только видимо авторы этого чуда эту пословицу не знают.
Да и количество непонятных макросов нам тоже намекает.
Ну и конечно же необходимость в таком страшном множественном наследовании с возможностью рандомных побочных эффектов тоже намекает нам о говноархитектуре. В общем не зря авторы Psi решили начать писать новый клиент.
guest 01.01.2010 18:08 # 0
2)Слишком большое наследование? Мне кажеться в данном случае это не говнокод, а то методов станет ещё больше...
3) Неизвестные Q_OBJECT и Q_INTERFACES?
4)#define constTbold "tagbold" - название макроса хуже и менее понятное, чем у строки?
Правильно?
Sauron 02.01.2010 00:51 # +1
2.Множественное наследование штука слишком опасная, нужно минимизировать его использование и уж точно не наследоваться сразу от 6 объектов. Мне вообще удается избегать его и ничего, жив, здоров.
3.С ними всё прекрасно как раз, это чисто Qtшные фишки
4.Макросы опять же зло, их плохо понимают анализаторы кода, они могут приводить к странным ошибкам, которые потом разгребать долго и упорно придется. Да и опять же в плане читабельности "шило на мыло". Ну и вроде как же договорились, что макросы должны писаться в ВЕРХНЕМ РЕГИСТРЕ.
То есть по совокупности это тихий ужас.
guest 02.01.2010 01:51 # −1
2. множественное наследование - вполне нормальное выразительное средство. У него ещё и оверхеда нет, в отличие от, например, виртуальных функций.
4. макросы действительно стоило бы заменить на char const *const, впрочем мало-ли как они ещё используются, может из них идентификаторы составляются?
Sauron 02.01.2010 12:51 # 0
<a href="http://ru.wikipedia.org/wiki/%D0%9C%D0%BD%D0%BE%D0%B6%D0%B5%D1%81%D1% 82%D0%B2%D0%B5%D0%BD%D0%BD%D0%BE%D0%B5_% D0%BD%D0%B0%D1%81%D0%BB%D0%B5%D0%B4%D0%B E%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5">Вот</a> ссылка на всю статью. То есть само по себе оно может быть очень опасным, а такие вещи, как плагины, часто пишут не слишком опытные программисты. Поэтому нужно по возможности их отгораживать от путей, которые легко приведут к ошибке.
guest 01.01.2010 18:09 # 0
guest 01.01.2010 19:02 # 0
explosion_head 01.01.2010 23:57 # 0
VampiRUS 02.01.2010 04:54 # 0
pushkoff 04.01.2010 15:43 # 0
Все люди делятся на 2 категории:
1. те которые понимают преимущества (newschool)
2. староверы (oldschool)
Тех, кто активно пользуется, очень мало, так как постичь это мастерство очень сложно, поэтому они в 1 группе.
Хотя в данном случае методов слишком много (миксин придуман для уменьшения их количества)...
guest 05.01.2010 09:41 # 0
guest 05.01.2010 09:42 # 0
ropuJIJIa 31.08.2023 02:14 # 0
Jaroslav285 25.08.2021 04:00 # 0