Проектирование и начало разработки

scorpion-ds

Новичок
Кто за что должен отвечать в начале разработки нового приложения?

Последнее время, я сам проектировал архитектуру приложений согласно брифу, сейчас меня перевели в другую команду, где начинается разработка нового приложения. Ни ТЗ ни брифа нет, есть документ, где описываются требуемые входящие и исходящие данные в виде JSON, но из них толком ничего неясно, как это должно в целом работать, само по себе это не приложение, а только сервис конвертации одного формата (из различных CRM, служб доставки, складов и т.п.) в другой, для "ядра" приложения (работа над ним еще не начата я так понимаю, также нет и ТЗ)

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

В моем понимании, кто придумывает архитектуру, тот и начинает разработку, остальные подключаются позже.

PHP:
<?php

namespace NAME\BaseApiBundle;

use Symfony\Component\Config\Definition\Exception\Exception;
use Symfony\Component\HttpKernel\Bundle\Bundle;
use Symfony\Component\Yaml\Yaml;

class NAMEBaseApiBundle extends Bundle
{
    protected $bundleDirectory;

    public function __construct($directory = __DIR__)
    {
        $this->bundleDirectory = $directory;
    }

    protected function parseMethodsConfiguration($directory) {
        $this->bundleDirectory = $directory;

        $file = $directory.'/Resources/config/methods.yml';

        if (!file_exists($file))
            throw new Exception(sprintf('You have to create methods.yml file into directory "%s/Resources/config"', $directory), 500);

        return Yaml::parse(file_get_contents($file));
    }

    public function getMethodsConfiguration() {
        return $this->parseMethodsConfiguration($this->bundleDirectory);
    }

    /**
     * Возвращает данные по переданным полям из входящего запроса
     * (обращение по апи к шине с другого ресурса)
     *
     * @param array $fields список полей метода
     * @return array
     */
    public function extractInput(Array $fields) {
        include_once($this->bundleDirectory.'/Services/Api.php');
        $api = new Api();

        return $api->processInputData($fields);
    }

    public function getApiService($init) {
        include_once($this->bundleDirectory.'/Services/Api.php');
        return new Api($init);
    }
}
PHP:
<?php

namespace NAME\BaseApiBundle;

class Api
{
    /**
     * Возвращает данные по переданным полям из входящего запроса
     * (обращение по апи к шине с другого ресурса)
     *
     * @param array $fields список полей метода
     * @return array
     */
    public function processInputData(Array $fields)
    {
        $data = []; //get data from input
        return $this->filterDataFields($data, $fields, 'out');
    }

    /**
     * Обработка возврата из апи-метода
     *
     * @param array $data
     * @param array $fields список полей метода
     * @return array
     */
    protected function processOutData(Array $data, Array $fields)
    {
        return $this->filterDataFields($data, $fields, 'out');
    }

    /**
     * @param array $data
     * @param array $fields
     * @param string $direction
     * @return array
     */
    protected function filterDataFields(Array $data, Array $fields, string $direction)
    {
        $directionFields = array_filter($fields, function($field) use ($direction) {
            return $field['direction'] == $direction;
        });

        return array_intersect_key($data, $directionFields);
    }
}
В остальном код представляет собой "заглушки" и множество YML файлов, на базе которых по идеи должны формироваться "конвертеры" и взаимодействие с интерфейсом.
 

Adelf

Administrator
Команда форума
Сейчас бы в 2017ом инклудить файлы в методах... да еще и копипастить это в каждом методе. что-то я сомневаюсь, что в симфониях так принято.

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

scorpion-ds

Новичок
Сейчас бы в 2017ом инклудить файлы в методах... да еще и копипастить это в каждом методе. что-то я сомневаюсь, что в симфониях так принято.
Нельзя конечно, подключение происходит автоматически на базе пространства имен.

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

ivanov77

Новичок
с формулировкой "нет ТЗ" (занимаюсь другим проектом).
Сразу скажу что для меня это пока теория, но в последнее время, подтягивая ООП, наткнулся на такие "новости" как Agile Software Development, Unified Process, так вот в них они стартуют свои проекты толком не имея какого то ТЗ, все это уточняется по ходу уже дела, и программируют сразу то что более менее понятно и благодаря "правильному" ООП (думаю в основном за счет SPR и DIP) этот ранний код нормально работает и в будущем.
 

scorpion-ds

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

Но сегодня, меня поставили на место, сказав, что я еще не заслужил доверия в проектировании и уменьшения контроля, пока я должен знать, ровно столько сколько мне сказали в задании, но я в свою очередь не могу с этим согласится, после того как увидел, то что уже написано руководителем ..., я готов подчинятся, но не в этой ситуации.

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

scorpion-ds

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

Далее код, это издевательство над симфони, модели данных в YML файлах описаны от балды, хотя для этого есть готовые проверенные решения, инклуды в коде, логика приложения даже не контролерах, а вообще в главных файлах бандлов, хранение настроек просто в файле в виде JSON, хотя туда лучше было притулить Монго. Говорю надо переписывать пока не потрачено зря много времени, ответ, что до конца месяца должен быть рабочий вариант, а там может и выделят время на переписывание, но вообще так как работе и так, то оставить как есть ...

В общем пока занимаюсь другим проектом, жду ТЗ, но наверно с той недели таки придется поковнокодить.

почему ты все время выбираешь какие-то говностудии с чсвшными дурнями? =)))
Не люблю большие компании и английский слабый, но сейчас хочу довести до логического конца другой проект, он сейчас в какой-то мере аутсорс стал (проблема с финансированием, потому отдельную команду там теперь не тянут), но работать над ним пока можно.

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

scorpion-ds

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

какое время зря потрачено?
Какой смысл работать над проектом, когда на данный момент нет ни ТЗ, ни общего понимание, что и зачем, и несоблюдение рекомендаций при разработке на Симфони. Я за то, что бы сначала все продумать и обсудить.
 

WMix

герр M:)ller
Партнер клуба
это спички, будет проблема, можно будет поменять, и мне кажется достаточно легко. но с настройками часто так что все в куче.
что лучше считать все избыточно махом или на каждый чих базу дергать?
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Чем лучше все хранить в одном JSON файле?
Ничем. Эти вопросы вообще не должны стоять перед тобой, пока это не проблема. Тимлиду всегда есть чем полезным занять людей, чем переписывать то что уже есть, и не планирует быть проблемой. Ты даже не знаешь, сколько будет настроек, и будут ли они часто меняться — ты же сам говоришь, что нет ТЗ и понимания. Поэтому твои предложения вредные с точки зрения управления проектом и командой.
 
  • Like
Реакции: AmdY

scorpion-ds

Новичок
Когда уже работает, то согласен, но оно еще не работает, есть только наброски.
 

AmdY

Пью пиво
Команда форума
а твой вариант с монгой - это достаём копьё и на его место засовываем гранату с выдернутой чекой получаем 500$ и ждём пока клиент не согласится доплатить 1500?
 
Сверху