От Форум : Ползвайте условния оператор ?
Винаги когато имате случай който може да се интерпретира като:
if(конете_могат_да_летят)
a=уха;
else
a=жалко;
//Го свеждайте до:
a=(конете_могат_да_летят)?уха:жалко;
Изглежда много засукано и сложно и всички ще се впечатляват. Изследвайте внимателно всички условни конструкции, защото възможност за оператор ? може да се крие навсякъде. Можете да го влагате, да го пъхате на най различни места и въобще да правите як и трудно-четим код. Внимавайте обаче с това къде го пъхате. В условия на цикли ще направи програмата по-бавна.
Като цяло не може да ви донесе никаква полза освен по-малко писане. Бързината му е идентична с тази на if структурата.
Гъзария: 6/10
Реална полза: 3/10 //по малкото писане си струва
Правете коментар-шаблон
С++ е интересен език. Когато направите шаблонна функция, той не я компилира и въобще не я пипа докато не я извикате. Така че ако имате коментар, който съдържа сорс-код, без да е коментиран сорс-код, е приятно да е шарен като останалите си, изпълняващи се събратя. Пример:
//======================================
template <class T> void
COMMENT
() {
долната функция се използва така
int n=nekva_funkcia()
dolna_funkcia(h);
може да хвърли ексепшън, за това слагайте
и try catch блок
}//=====================================
void dolna_fukcia(int n) {...}
Ще пишете малко повече, обаче е изненадващо приятно да четеш оцветени коментари...
![Smiley :)](https://forum.uni-plovdiv.net/Smileys/classic/smiley.gif)
Гъзария: 8/10
Реална полза: 2/10
Индексирайте число с указател
Ами тъй като в С и С++, операторът [], в случай че не е предефиниран, просто прибавя едно число (указател), към друго (индекс), можем да правим следните калабалъци:
int ar[10] = {...};
for(int i=0; i<10; ++i)
cout << i[ar];
За съжаление (a може би и за щастие) с двумерни масиви не става. Там операцията е малко по-различна. Друг е въпроса че прави кода ужасно объркан и може да докара до инфаркт някой не достатъчно запознат със тънкостите на езика.
Гъзария: 9/10
Реална полза: 1/10
Правете празни цикли
Поради огромните възможности на for, можем да сместим голяма част от това което трябва да прави в самия него. Например:
//просто
for(int i=0; i<10; ++i)
cout << ar
;
//->
for(int i=0; i<10 && (cout << a); ++i);
//сложно
s=x;
for(i=0; i<N; ++i) {
cout << s << ' ';
s+=a;
if(i>5)
a=8;
else
a=10;
}
//->
for(i=0, s=x; i<N && (cout << s << ' '); ++i, s+=a, a=(i>5)?8:10);
Е понякога нещата не е препоръчително да се усложняват толкова, обаче има и случаи, в които е полезно. (Не ме питайте за такива!) Факт е че цели програми могат да се вместят в един for.
Гъзария: 7/10
Реална полза: 3/10
Индексирайте литерали
Стриговите литерали от вида "аз съм стрингов литерал хахахаха", са интересно нещо, защото езикът ги интерпретира като const char*. И както можем да индексираме const char*, така можем и стринговия литерал. С помощта на няколко от горните съвети можем да направим интересна операция за изписване на текст.
int i=0;
while(putchar(i++["О боже! Къде ме набутаха?!?"]));
Гъзария: 9/10
Реална полза: 2/10 //абе аз по принцип не съм фен на литералите за това
Викайте main
За съжаление в С++ тази операция е забранена, обаче С програмистите могат да се повеселят с програми като тази:
int main(int argc)
{
if(argc==0)
return 0;
printf("%d ", main(argc-1))
return argc;
}
И като извикате "ludnica.exe a a a a a a" ще изкара резултат "0 1 2 3 4 5". Яко! Едва ли има и 1 на милион програми, в които това има макар и микроскопичен смисъл (продължавайте да не ме питате за такива!), но все пак изглежда шашаво. Още си спомням с умиление оцъкления поглед, когато видях такова нещо за първи път...
Гъзария: 10/10
Реална полза: 2/10
Естествено има и хиляди други примери за шашав, грозен и безполезен код. Чудесата които можете да направите само с #define са неизброими. Тези по-простички "съвети" ми хрумнаха сега. Ако се сетя още (простички) ще допълня.
П.П. ако случаино съм наръшил някои лиценз сажелявам просто не видях под какъв лиценз са примерите на саита от който ги взех .
иначе те са от : http://sourcecore.net/article.php?id=28
Author : iboB