|
Страници по тази тема: 1 | 2 | 3 | 4 | 5 | (покажи всички)
Тема
|
no goto?
|
|
Автор | dummy (Нерегистриран) |
Публикувано | 17.12.03 02:30 |
|
Taka...
Imame slednia code:
for ( int i = 0; i < 10; i++ )
{
TryAgain:
// malko code
while ( condition )
{
if ( f(i,l) == true )
{
l++;
goto TryAgain;
}
else
{
// edna kamara code
}
// oste edna kamara code
}
}
Kak da se izbegne goto v tozi sluchai?
| |
Тема
|
Re: no goto?
[re: dummy]
|
|
Автор | Гypy (Нерегистриран) |
Публикувано | 17.12.03 02:37 |
|
continue;
| |
Тема
|
с continue няма да стане
[re: Гypy]
|
|
Автор | zaphod (Нерегистриран) |
Публикувано | 17.12.03 08:04 |
|
по принцип може да се избегне, но ще стане още по-нечетливо. аз в такива случаи пиша гото и не ми мигва окото.
| |
Тема
|
Re: с continue няма да стане
[re: zaphod]
|
|
Автор | expert (Нерегистриран) |
Публикувано | 17.12.03 09:16 |
|
i koe mu e nechetlivoto na continue?
e ako iskash da izlezesh niakolko niwa na wlojenost, mai
samo s goto stawa chetliwo... za men.
Guru sigurno bi izpolzwal exception ako e na C++, no se
symniawam dali ima namerenie poweche da polzwa
takiwa inferior sredstwa kato ima VB.NET...
drugia wariant e da si uprostish algorityma,
tam mai winagi ima kakwo da se naprawi :)
| |
|
слагаш вътрешния цикъл във функция.
без майтап в една фирма големи глави са писали кодинг станадарт да не се ползва нито break, нито continue, a return osven v края на функция не се препоръчва.
| |
Тема
|
Re: с continue няма да стане
[re: expert]
|
|
Автор | Guru (Нерегистриран) |
Публикувано | 17.12.03 10:29 |
|
>> e ako iskash da izlezesh niakolko niwa na wlojenost, mai
Е за какво ги влагаш едно в друго тия няколко нива на "вложеност", след като можеш да скачаш наляво надясно през нивата ? Нали затова кода трябва да е структуриран, от едно място да се стига до друго ясно и четливо.
Ако в един цикъл вложиш друг, трябва ЗАДЪЛЖИТЕЛНО от вложения цикъл да може да се излиза само в неговия parent цикъл, иначе за какво ги nest-ваш един в друг ? Ако може да се скача наляво надясно във nested цикли, то тогава по дефиниция проблема не трябва да се решава с nested цикли а със
отделяне на кода във методи и викане на съответните методи.
Именно и затова 99% от употребата на "гото" се abuse-ва и учи на лошо кодиране, щото така е по-лесно да се пишат спагети, а после който оправя бъговете той да му мисли.
| |
|
bool gotoSux;
for ( int i = 0; i < 10; i++ )
{
do
{
gotoSux = false;
// malko code
while ( condition )
{
if ( f(i,l) == true )
{
l++;
gotoSux = true;
break;
}
else
{
// edna kamara code
}
// oste edna kamara code
}
}
while (gotoSux);
}
| |
Тема
|
Re: no goto?
[re: Questor]
|
|
Автор |
Mycлoн (Муслен Ужасон) |
Публикувано | 17.12.03 11:29 |
|
съгласен съм с изваждането на функцията.
аз виждам грозно написана огромна процедура, която прави 50 неща ( ако броим коментарите за камарите код ). разделянето на малки процедури е най-малкото, което може да се направи.
гото-то само по себе си не е лошо. то е СИМПТОМ на лошите неща, които ни дебнат :->
ако гледаме само циклите --> виждам нещо ( вътрешния ), което се опитваме да направим 10 пъти. ами защо нещото не се издърпа навън и не му се сложи четливо име. ExtractMethod рефакторинга визирам.
--
"Agile is a mindset, not a set of practices, rules, or tools."
Tom Poppendieck
| |
Тема
|
Re: no goto?
[re: dummy]
|
|
Автор | Zelen (Нерегистриран) |
Публикувано | 17.12.03 11:30 |
|
Ми не избягвай "goto"! :)
Мисли, както казват, позитивно:)
Повечето програмисти си сменят работата през година, две.....
От това следва, че няма да си ти човека, който ще го оправя след време.
От това следва - създай малко работа и за бъдещите програмисти:)
Всичко на готово ли ша да получават, я!:)
| |
Тема
|
Re: no goto?
[re: Zelen]
|
|
Автор |
Mycлoн (Муслен Ужасон) |
Публикувано | 17.12.03 11:33 |
|
>От това следва, че няма да си ти човека, който ще го оправя след време.
но и следва, че ще оправяш чужди "шедьоври" на друго място нали?
--
"Agile is a mindset, not a set of practices, rules, or tools."
Tom Poppendieck
| |
|
Страници по тази тема: 1 | 2 | 3 | 4 | 5 | (покажи всички)
|
|
|