- 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
class set_ftp: public QObject
{
public:
typedef class impl_set_ftp: QObject
{
QString url ;
QString login ;
QString password;
QString siis ;
QString ssm ;
QString ssl ;
QString url_siis;
QString url_ssm ;
QString url_ssl ;
friend class set_ftp;
impl_set_ftp(QObject* p): QObject(p) {}
} Impl;
inline QString& url () const {return impl->url ;}
inline QString& login () const {return impl->login ;}
inline QString& password() const {return impl->password;}
inline QString& siis () const {return impl->siis ;}
inline QString& ssm () const {return impl->ssm ;}
inline QString& ssl () const {return impl->ssl ;}
inline QString& url_siis() const {return impl->url_siis;}
inline QString& url_ssm () const {return impl->url_ssm ;}
inline QString& url_ssl () const {return impl->url_ssl ;}
inline void set_url (const QString& _url ) {impl->url = _url ;}
inline void set_login (const QString& _login ) {impl->login = _login ;}
inline void set_password(const QString& _password) {impl->password = _password;}
inline void set_siis (const QString& _siis ) {impl->siis = _siis ;}
inline void set_ssm (const QString& _ssm ) {impl->ssm = _ssm ;}
inline void set_ssl (const QString& _ssl ) {impl->ssl = _ssl ;}
inline void set_url_siis(const QString& _url_siis) {impl->url_siis = _url_siis;}
inline void set_url_ssm (const QString& _url_ssm ) {impl->url_ssm = _url_ssm ;}
inline void set_url_ssl (const QString& _url_ssl ) {impl->url_ssl = _url_ssl ;}
set_ftp() : QObject(0), impl(new Impl(this)) {}
set_ftp(QObject* p): QObject(p), impl(new Impl(this)) {}
private:
Impl* impl;
};
Код написанный человеком, считающим себя "гуру разработки программирования", а так же "активным научным деятелем".
Главная мысль глядя на это у меня - охренное тестовое задание с вопросом - укажите абсолютно все бредни в этом коде, но разумеется в более нормальной формулировке... а чО - неплохой тест...
з.ы. этот же человек никогда не пишет cpp файлы все в хедерах собачит....
guest 27.01.2012 13:04 # −9
LuCiFer 27.01.2012 13:06 # −8
absolut 27.01.2012 13:13 # 0
defecate-plusplus 27.01.2012 13:25 # +8
может он начитался умных статеек про pimpl, и решил попробовать себя в новом деле, ну подумаешь, хрень получилась
а может он просто дрочит на процесс, гордится собой
кроме того, что всё тут лишнее - и ненужная инкапсуляция с геттерами/сеттерами, и impl *, возвращать неконстантную ссылку из константного метода... если без указателя, то вызывает много вопросов даже у компилятора, видать за этим и указатель! надо же бороть крестопроблемы, в самом деле!
guest 27.01.2012 13:47 # +3
о, а я знаю typedef!
>class impl_set_ftp: QObject
зачем QObject?
>Impl* impl;
FFFFFUUUUUU
QScopedPointer придумали для лохов. Ъпрограммисты не используют смарт-поинтеры. Лучше пусть QObject сам заботиться об удалении impl
Psionic 30.01.2012 10:52 # 0
AxisPod 31.01.2012 07:29 # 0
guest 31.01.2012 09:21 # 0
LuCiFer 31.01.2012 15:53 # 0
до этого он вообще все свои переменные облечал в такую ересь -
template <class T>
class ssm_Var
{
public:
ssm_Edit edit;
ssm_Var():edit(DEFAULT_EDIT) {}
ssm_Var(T _var):edit(DEFAULT_EDIT), var(_var){}
inline void set(T _var) {var = _var; } //Устанавливаем Переменную
inline T get() const {return var;} // считываем Переменную
inline T* link() {return &var;} // или указатель на неё
inline T& self() {return var;} // или её же по ссылке
private:
T var; // Переменная, ради которой и создан весь класс
};
потом надоело, в проекте где это есть оставил и начал облачать уже в
// класс с двумя переменными
template <class T1, class T2>
class zn_var_ab
{
public:
zn_var_ab(){}
zn_var_ab(T1 _a, T2 _b): a(_a), b(_b){}
inline void set_a(T1 _a) {a.set(_a);}
inline void set_b(T2 _b) {b.set(_b);}
inline void set_ab(T1 _a, T2 _b) {a.set(_a); b.set(_b);}
inline T1 get_a() const {return a.get();}
inline T2 get_b() const {return b.get();}
inline T1* link_a() {return a.link();}
inline T2* link_b() {return b.link();}
inline T1& self_a() {return &a.self();}
inline T2& self_b() {return &b.self();}
private:
zn_var<T1> a;
zn_var<T2> b;
};
template <class T>
class zn_var_def
{
public:
zn_var_def(): def(false) {}
zn_var_def(T _var): def(true), var(_var) {}
inline void set(T _var) {var = _var; def = true;}
inline bool isDefined() {return def;}
inline bool isEmpty() {return !def;}
inline T get() const {return var;}
inline T* link() {return &var;}
inline T& self() {return var;}
private:
bool def;
T var;
};
теперь перешел к описанному в самом начале....
и все это в рамках одного проекта, все переменные в это г обвернуто...
1.5 МБайта (!!!!!) сырцов этого ада.....
defecate-plusplus 31.01.2012 16:00 # +2
мыши кололись и плакали