Обзор книги «Искусство тестирования программ»

Искусство тестирования программ

Сейчас вот сижу, и не могу понять, а зачем я вообще приобрел эту книгу? Стоит она не дешево — 1300 рублей за 260 страниц устаревших методик. Купился на явно липовые отзывы на озоне? Ладно, не могу сказать что книга прямо бесполезна, нового я ничего не узнал (какой сюрприз, я не узнал ничего нового из книги написанной в 1979 году), но кое-что любопытное прочел.

В России книга переиздана (в третий раз) в 2015 году, однако по сути, это все та же книга из 79того. Просто невозможно без умиления читать главу про методы тестирования Инспеции, сквозные просмотры и обзоры программ, подразумевающие собрание из пяти человек и групповое обсуждение за столом(без компьютеров) участка кода, со скоростью 150 строк в час. Я прямо представляю, как я собираю у себя в компании программистов: “Ну ребят, ну отвлекитесь, я там новые 150 строк напечатал, нужно обсудить, ну!!!”.

“Порадовала” глава Высокоуровневое тестирование, которую по хорошему нужно было назвать “Как не закончить проект никогда”. Глава рассказывает о том, как навести в проекте отличную бюрократию в стиле романов Кафки, и явно предугадывая реакцию какого-то “очень умного” программиста из далекого 2015 года, автор рассказал в этой главе про критерии завершения тестов… Ну ни один из этих критериев я бы использовать не стал, тем более, что среди них есть совсем уж бредовые.

(далее…)

Создаем свой Фреймворк на компонентах symfony2. Часть 7

Сейчас в нашем фреймворке есть один минус. Нам нужно копипастить код во front.php каждый раз, как мы создаем сайт. 40 строк кода — это не так уж и много, но было бы неплохо обернуть этот код в класс, что даст нам возможность многократного использования, и лучшую тестируемость кода.

Если присмотреться к front.php — можно увидеть, что мы принимаем данные запроса и выводим ответ. Наш класс будет придерживаться простого принципа: вся логика ограничена созданием ответа для запроса.

Так как, компоненты Symfony2 все равно требуют PHP 5.3, давайте для нашего класса определим пространство имен Simplex, и перенесем в него логику обработки запроса:

(далее…)

Создаем свой Фреймворк на компонентах symfony2. Часть 6

Вы наверное думаете, что наш фреймворк уже достаточно хорош, и вы правы! Но, тем не менее, давайте посмотрим, как мы можем сделать его еще лучше.

Сейчас все наши примеры используют процедурный код, но помните, что контроллеры могут быть любыми валидными объектами типа PHP callbacks. Давайте представим наш контроллер в виде класса.

И, соответственно, обновим определение маршрута.

(далее…)

Создаем свой Фреймворк на компонентах symfony2. Часть 5

Внимательный читатель заметил, что в нашем фреймворке захардкоден способ определения шаблона. Для простейших страничек, типа тех, которые мы создавали ранее — это не проблема. Но если вы захотите добавить немного логики — вам придется добавлять логику в сам шаблон, что, в общем, не самая хорошая идея.

Давайте разделим код шаблонов и логику, добавив новый слой: Контроллер. Задача контроллера — генерировать ответ, основываясь на информации, переданной клиентским запросом.

Измените часть фреймворка, отвечающую за отображение шаблонов следующим образом:

(далее…)

Создаем свой Фреймворк на компонентах symfony2. Часть 4

Прежде чем начать сегодняшнюю статью, давайте проведем небольшой рефакторинг, что бы сделать наши шаблоны немного более читаемыми.

Раз мы распаковали параметры запроса, то можем упростить hello.php следующим образом:

(далее…)

Создаем свой Фреймворк на компонентах symfony2. Часть 3

Пока что, наше приложение довольно простое и содержит всего одну страничку. Давайте немного посумасбродствуем, и добавим еще одну, чтобы сказать “Пока”.

Как видите, bye.php и index.php содержат много общего кода. Давайте выделим код, который мы можем разделить между обеими страничками. Общий код — звучит как хороший план, для создания нашего первого настоящего фреймворка..

(далее…)

Обзор книги «Объектно-ориентированное мышление»

Покупал эту книгу с двояким чувством. С одной стороны, интересная тема, с другой… ну что там может быть нового? Полистал, почитал, выхватил взглядом пару интересных мыслей и купил. И не жалею. Нового действительно ничего не узнал, но читать было интересно, так что, да, не жалею.

Надо сказать, что совсем мимо книга не прошла. В очередной раз вспомнил, почему программировать нужно на уровне интерфейсов. В очередной раз, корил себя, что не делаю этого. В очередной раз прочитал про прописные истины: наследование, полиморфизм и инкапсуляцию. Стал свидетелем очередного спора между наследованием и композицией. Пополнил коллекцию примеров задач, в которых ООП выгоднее процедурного стиля. Узнал парочку интересных книг, цитируемых автором. В общем, было не скучно, и даже полезно. Полезно для меня, но будет ли полезно для вас?
(далее…)

Создаем свой Фреймворк на компонентах symfony2. Часть 2

Перед тем, как мы погрузимся в рефакторинг кода, я бы хотел сделать небольшое отступление, и поговорить о том, зачем вам нужно использовать фреймворк, вместо того, что бы писать ваши приложения на старом добром plain PHP. Почему использовать фреймворк — хорошая идея, даже для небольших кусков кода, и почему создание фреймворка на основе компонентов Symfony2 — лучше, чем создание фреймворка с нуля.

Я не буду говорить об очевидных причинах использования фреймворка, когда работа идет над большим приложением, целой командой разработчиков, интернет итак переполнен отличными ресурсами по этой теме.

Даже учитывая, что приложение написанное нами в прошлой статье было очень простым, оно содержит в себе несколько проблем.

(далее…)

Создаем свой фреймворк на компонентах symfony2. Часть 1.

Symfony2 — Это набор автономных, самостоятельных и легко интегрируемых между собой PHP компонентов, которые решают основные задачи web-разработки.

Вместо того, что бы использовать низкоуровневые компоненты, вы можете использовать готовый к работе, полноценный фреймворк Symfony2, основанный на этих компонентах… или вы можете создать свой собственный фреймворк, Именно этому вопросу посвящена данная серия статей.

Если вы все же хотите использовать полноценный Symfony2, вам полезнее будет прочитать официальную документацию

Зачем вам создавать собственный фреймворк?

Итак, зачем вам создавать собственный фреймворк? Если вы спросите — большинство людей скажут, что это плохо, что это изобретение велосипеда, что вам лучше выбрать один из уже существующих фреймворков и раз и на всегда забыть о создании собственного. Чаще всего — это правда. Однако, я могу придумать несколько причин для создания своего фреймворка:
(далее…)