Jump to content
  • 0

алгоритмизация


D.S.Denton
 Share

Question

что-то тут подобного топика нет... в хтмльном есть "как делать не надо", а в программировании не завалялось даже простейшего примера...

начну уж:+)

предыстория: стукнулся в почту один модмейкер пунбб за помощью (то что он француз и приходится общаться на английском еще больше добавляет интереса.. никто не пробовал перевести хотя б с русского на английский и обратно полученный текст? вот тут еще веселее с 4 переводами...)

итак, имеется мод дневников. исходный код:

 $post_actions = array();
if($pun_user['g_id'] == 1 || $pun_user['id'] == $user) {
if ($UD_reporting == 'yes') {
$post_actions[] = '<li class="postreport">[<a href="diary_misc.php?report='.$cur_entry['id'].'">'.$lang_topic['Report'].'</a>]</li> <li class="postdelete">[<a href="diary_delete.php?id='.$cur_entry['id'].'">'.$lang_topic['Delete'].'</a>]</li>';
}
else {
$post_actions[] = '<li class="postdelete">[<a href="diary_delete.php?id='.$cur_entry['id'].'">'.$lang_topic['Delete'].'</a>]</li>';
}
}
elseif (!$pun_user['is_guest']) {
if ($UD_reporting == 'yes') {
$post_actions[] = '<li class="postreport">[<a href="diary_misc.php?report='.$cur_entry['id'].'">'.$lang_topic['Report'].'</a>]</li>';
}
}

пытаемся понять логику и построить ветви глядя в код...

1 - если просматривает админ или автор записи, идем к 1.1, иначе 2

1.1 - если включена опция жалоб, идем к 1.1.1

1.1.1 - выводим ссылки "пожаловаться" и "удалить"

1.1.2 - выводим ссылку "удалить"

2 - если просматривает не гость, идем к 2.1, иначе выходим из условия

2.1 - если включена опция жалоб, идем к 2.1.1, иначе выходим из условия

2.1.1 - выводим ссылку "пожаловаться"

теперь попробуем все-таки прикинуть как это должно работать в идеальном случае. никаких редакторов, только ручка и бумага. блок-схемы рисовать не разучились?

значит задача у нас чтоб администратор и автор записи видел обе линки, пользователь только одну и гость не видел вообще. причем из этих линков отображение "жалобы" зависит от настройки. (да, в идеале администратор не должен видеть линк "пожаловаться", т.к. это бред, но мы оптимизируем программу а не смотрим итоговый дизайн. раз при разработке дизайна решили что админ видит - мы уже не меняем).

картинки неохота рисовать и грузить, так что сформулирую словами более простой алгоритм.

1 - проверяем если это не гость, идем к 1.1, иначе вываливаемся из условия

1.1 - если включена опция жалоб, добавляем линк "пожаловаться", иначе вываливаемся из условия

1.2 - если просматривает администратор или автор, добавляем линк "удалить", иначе вываливаемся из условия

готово!

теперь воплощаем это в коде:

 $post_actions = array();
if(!pun_user['is_guest']) {
if($UD_reporting == 'yes') {
$post_actions[] = '<li class="postreport">[<a href="diary_misc.php?report='.$cur_entry['id'].'">'.$lang_topic['Report'].'</a>]</li> ';
}
if($pun_user['g_id'] == 1 || $pun_user['id'] == $user) {
$post_actions[] = '<li class="postdelete">[<a href="diary_delete.php?id='.$cur_entry['id'].'">'.$lang_topic['Delete'].'</a>]</li>';
}
}

разница в объеме и удобочитаемости очевидна

Link to comment
Share on other sites

5 answers to this question

Recommended Posts

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy