Перед написанием скрипта

324
.
точка невозврата
Screamer, вот как я пишу допустим новнсти.
Сперва пишу механизм добавления, потом когда новость уже в базе - механизм отображения, и в конце уже с него изм/удал. Как бы скрипт пишется по той логической цепочке, по которой он, собсно, и работает.
.
vermas, я для начала запиливаю таблицу в бд, под нее пишу модель, далее заполняю контроллер.
Там без разницы как делать, т.к. я сначала пишу код а потом уже смотрю как он работает.
Что касается добавления/изменения я их всегда стараюсь объединять насколько это возможно, так гораздо меньше кода выходит. Частенько встречаю когда дублируют по файлам один и тот же код особенно в этих местах. Ну и под конец естесственно языки и вьюхи.
Вот пример добавления/изменения для наглядности:
if (!$this->loader->is_root) {
redirect('w_action/err');
}
$name = !preg_match('/[^\da-z]+/u', trim($name)) ? trim($name) : '';
$error = array();
$title = empty($name) ? 'create_board' : 'edit_board';
$title = $this->loader->lang('board')->$title;
$this->loader->settings['page_title'] = $title;
if (!empty($name)) {
$data = $this->loader->model('board')->get($name);
if (!is_array($data)) {
redirect('w-action/err');
}
} else {
$data = array(
'name' => '',
'summary' => '',
'description' => '',
'hidden' => 0,
);
}
if (!empty($_POST)) {
if (isset($_POST['ok'])) {
// Check'n'Save
$data['summary'] = isset($_POST['summary']) ? trim($_POST['summary']) : $data['summary'];
$data['description'] = isset($_POST['description']) ? trim($_POST['description']) : $data['description'];
$data['hidden'] = intval(isset($_POST['hidden']));
if (mb_strlen($data['summary']) < 2 || strlen($data['summary']) > 255) {
$error['summary'] = sprintf($this->loader->lang('common')->wrong_string_len, 2, 127);
}
if (strlen($data['description']) > 1000) {
$error['description'] = sprintf($this->loader->lang('common')->wrong_string_len_more, 500);
}
if (empty($name)) {
$data['name'] = isset($_POST['name']) ? trim($_POST['name']) : $data['name'];
if (mb_strlen($data['name']) < 1 || strlen($data['name']) > 10) {
$error['name'] = sprintf($this->loader->lang('common')->wrong_string_len, 1, 10);
} elseif(preg_match('/[^\da-z]+/u', $data['name'])) {
$error['name'] = $this->loader->lang('board')->wrong_board_name;
} elseif (is_dir(FILEPATH . 'boards' . DIR_SEP . $data['name'])) {
$error['name'] = $this->loader->lang('board')->board_already_exists;
}
}
if (empty($error)) {
$this->loader->model('board')->save($data);
if (empty($name)) {
$dir = FILEPATH . 'boards' . DIR_SEP . $data['name'];
mkdir($dir);
chmod($dir, 0777);
}
redirect($data['name']);
}
} else {
redirect((empty($name) ? 'w_action/panel' : $name)); // Cancel
}
}
return $this->loader->view('board_form', array(
'title'              => $title,
'name'               => empty($name),
'name_label'         => $this->loader->lang('board')->name,
'summary_label'      => $this->loader->lang('board')->summary,
'description_label'  => $this->loader->lang('board')->description,
'hidden_label'       => $this->loader->lang('board')->hide,
'submit'             => $this->loader->lang('common')->save,
'cancel'             => $this->loader->lang('common')->cancel,
'data'               => $data,
'error'              => $error,
));
.
Screamer (22.05.2013 / 15:06)
-sanek-, Ну давай разберем на примере.
Небольшой скрипт. Дополнение к движку.
Пусть это будут новости.

Краткое ТЗ:
Добавление, изменение, удаление, просмотр новости.
Просмотр списка новостей,
Не ну если есть чёткое тз то да, особого мозголома нет. А вот с самого ноля, я так не могу. Мне сначала нужно придумать какие функции у этого скрипта будут, потом обрисовать сам скрипт и начинаю его делать. По другому у меня не как. Может просто опыта мало
.
Леплю код по разным строкам, юзаю комменты, чтобы обозначить, что, да в какой строке должно работать.
.
Кадило крутится, лавэха мутится
Думать много вредно. Гг.
Сначала нужно написать чтобы работало, а потом уже доводить код до нужного вида (ну в пределах разумного).
В противном случае если постоянно переписывать что-то, то ничего написано не будет, все время уйдёт на переписывание одного и того же под новые идеи.
Где-то вэбинар юзал походу на яндексе, так там такой же совет был правда на счет скорости работы и оптимизации. Так вот смысл был в том что надо сначала делать так, чтобы оно выполняло то, что нужно, а ты потом можешь уже заняться оптимизацией там где это нужно.
.
http://cs14115.vk.me/c540103/v ... A.jpg

Как раз к теме
.
(\/)____o_O____(\/)
думаю каждый по разному пишет, я например сначала пишу вывод, делаю таблицу и заполняют запросами, куски кода которые пригодятся не раз записываю в функции или классы, делаю файл конфига где все общее для всех файлов, там объявленные нужные вещи, потом уже кнопочки админа, соглашусь что нужно объединять, добавление и изменение это по сути все те же поля, только если это редактор, поля заполнены и меняются по надобности, в итоге либо инсерт или апдэйт, проще писать когда уже имеешь свою базу реализации различных, какие либо свои функции, кочующие из скрипта в скрипт велосипеды, и прочее
.
Я всегда начинаю с того чего и скрипт, например делал модуль вопросы/ответы сразу писал индекс, тем же временем обдумывал структуру базы, после того как что то написал, ну типа уже не сижу за компом, обдумываю подальшие действия и если надо то записываю, ну там в основном таблицы и некоторые решения в голову лезут...
.
Simba (22.05.2013 / 15:51)
Думать много вредно. Гг.
Сначала нужно написать чтобы работало, а потом уже доводить код до нужного вида (ну в пределах разумного).
В противном случае если постоянно переписывать что-то, то ничего н
полностью согласен, именно так и делаю всегда
Всего: 19