- 1
- 2
- 3
port.put(0x64, 0xEE);
for(register int r=0;r<0xffff;++r);
port.get(0x64);
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+175
port.put(0x64, 0xEE);
for(register int r=0;r<0xffff;++r);
port.get(0x64);
port - объект для обращения к портам ввода\вывода компьютера.
for - задержка между обращениями к портам (Оптимизатор С++ её конечно же убирает в релизе программы).
+162
template<const bool Value>
const bool BoolToFunc(void) const
{
return Value;
};
+165
enum TextAlignment
{
ALIGN_LEFT = 0,
ALIGN_RIGHT,
ALIGN_CENTER
};
...
if(m_textAlignment > 0 && maxLineWidth < m_desiredLength)
{
float offsetx = (m_desiredLength - maxLineWidth) / m_textAlignment;
...
}
Выравниваем текст. Универсальненько.
Что будет, если значения в энумке поменяются или добавится, к примеру, justify, никого не волнует.
+177
auto r=disable(reinterpret_cast<void*>(static_cast<Efrag*>(const_cast<Efrig*>(ef))));
Три мудреца в одном тазу
Пустились по морю в грозу.
Будь попрочнее старый таз,
Длиннее был бы мой рассказ.
..............Самуил Маршак
+147
#include <stdio.h>
int main(int t,int _,char*a)
{return!0<t?t<3?main(-79,-13,a+main(-87,1-_,
main(-86, 0, a+1 )+a)):1,t<_?main(t+1, _, a ):3,main ( -94, -27+t, a
)&&t == 2 ?_<13 ?main ( 2, _+1, "%s %d %d\n" ):9:16:t<0?t<-72?main(_,
t,"@n'+,#'/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l,+,/n{n+\
,/+#n+,/#;#q#n+,/+k#;*+,/'r :'d*'3,}{w+K w'K:'+}e#';dq#'l q#'+d'K#!/\
+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;# ){n\
l]!/n{n#'; r{#w'r nc{nl]'/#{l,+'K {rw' iK{;[{nl]'/w#q#\
n'wk nw' iwk{KK{nl]!/w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlwb!/*de}'c \
;;{nl'-{}rw]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;\
#'rdq#w! nr'/ ') }+}{rl#'{n' ')# }'+}##(!!/")
:t<-50?_==*a ?putchar(a[31]):main(-65,_,a+1):main((*a == '/')+t,_,a\
+1 ):0<t?main ( 2, 2 , "%s"):*a=='/'||main(0,main(-61,*a, "!ek;dc \
i@bK'(q)-[w]*%n+r3#l,{}:\nuwloca-O;m .vpbks,fxntdCeghiry"),a+1);}
Консольный вывод этой программы:
On the first day of Christmas my true love gave to me
a partridge in a pear tree.
On the second day of Christmas my true love gave to me
two turtle doves
and a partridge in a pear tree.
...
[Все не вместилось]
...
On the tenth day of Christmas my true love gave to me
ten lords a-leaping,
nine ladies dancing, eight maids a-milking, seven swans a-swimming,
six geese a-laying, five gold rings;
four calling birds, three french hens, two turtle doves
and a partridge in a pear tree.
On the eleventh day of Christmas my true love gave to me
eleven pipers piping, ten lords a-leaping,
nine ladies dancing, eight maids a-milking, seven swans a-swimming,
six geese a-laying, five gold rings;
four calling birds, three french hens, two turtle doves
and a partridge in a pear tree.
On the twelfth day of Christmas my true love gave to me
twelve drummers drumming, eleven pipers piping, ten lords a-leaping,
nine ladies dancing, eight maids a-milking, seven swans a-swimming,
six geese a-laying, five gold rings;
four calling birds, three french hens, two turtle doves
and a partridge in a pear tree.
+175
template<class Exception>
bool GenerateException(const Exception* const e)
{
throw e;
delete e;
return true;
}
Продолжение цикла говнокодов про исключения из того же самого проекта.
Проблем от неё почти нет, тк в основном исключения генерятся так:
ExceptionТакойто e;
GenerateException(&e);
+169
class SeismicDriver {
void set2DVolume (GlData2DVol* vol = 0, bool reserv = false);
GlData2DVol* _glData2DVol; /**< Seismic 2D Line */
}
void SeismicDriver::set2DVolume (GlData2DVol* vol, bool reserv)
{
_glData2DVol = vol;
}
Наш подопытный китаец очень предусмотрительный. Если в будущем вдруг случится, что функции понадобится второй параметр типа bool - опа! - он уже есть :)
+162
class GlData2DLine
{
virtual std::vector<Vec2d> getDecimatedPoints();
protected:
std::vector<Vec2d> c_decimated_points;
}
std::vector<Vec2d> GlData2DLine::getDecimatedPoints()
{
return c_decimated_points;
}
class GlData2DLineOD : public GlData2DLine
{
virtual std::vector<Vec2d> getDecimatedPoints();
}
std::vector<Vec2d> GlData2DLineOD::getDecimatedPoints()
{
return c_decimated_points;
}
Наш любимый китаец увлекся ООП и полиморфизмом что забыл очевидное.
+161
/**
* Standard QWidget Constructor
*/
SeismicSelectionDG::SeismicSelectionDG(QWidget *parent)
: QDialog(parent), ui(new Ui::SeismicSelectionDG)
{
...
}
/**
* Destructor
*/
SeismicSelectionDG::~SeismicSelectionDG()
{
if(ui) delete ui;
}
/**
* Set title to dialog box
* @param title The title for dialog box
*/
void SeismicSelectionDG::setDialogTitle(const QString& title)
{
QDialog::setWindowTitle(title);
}
Обратим внимание как мой коллега китаец тщательно документирует код. метод setDialogTitle - в особенности. А учитывая что QDialog::setWindowTitle - библиотечный метод, необходимость оборачивать его в свой метод полностью отсутствует. Также глупость в деструкторе - для delete необязательно проверять указатель на 0.
+161
// из объявления класса
...
float _x_3DMin; /**< Min X value */
float _x_3DMax; /**< Max X value */
float _z_3DMin; /**< Min Z depth value */
float _z_3DMax; /**< Max Z depth value */
/* 2D seismic variables */
float _x_2DMin; /**< Min X value */
float _x_2DMax; /**< Max X value */
float _z_2DMin; /**< Min Z depth value */
float _z_2DMax; /**< Max Z depth value */
/* No seismic selection variables */
float _xMin; /**< Min X value */
float _xMax; /**< Max X value */
float _zMin; /**< Min Z depth value */
float _zMax; /**< Max Z depth value */
...
void SeismicSelectionDG::initMembers()
{
// initialise values
_x_3DMin = 0.0F;
_x_3DMax = 0.0F;
_z_3DMin = 0.0F;
_z_3DMax = 0.0F;
_x_2DMin = 0.0F;
_x_2DMax = 0.0F;
_z_2DMin = 0.0F;
_z_2DMax = 0.0F;
_xMin = 0.0F;
_xMax = 0.0F;
_zMin = 0.0F;
_zMax = 0.0F;
...
}
Ну и весь остальной код состоит из этих говно-паттернов. Об абстракциях товарищ понятия не имеет.