Практика: хороший или плохой код?

niko42

Новичок
Здравствуйте.

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

PHP:
interface I_Order{
    public function getName();
}
interface I_Form extends I_Order{
    public function getPhone();
}
interface I_Product extends I_Order{
    public function getId();
}

class Form implements I_Form{
    function getName(){
        return 'Form';
    }

    public function getPhone(){
        return '79008005555';
    }

    private function parsePhone($phone){
        // и какое-нибудь  preg_match() приводя в читабельный вид
    }
}

class Product implements I_Product{
    function getName(){
        return 'Product';
    }

    public function getId(){
        return '441';
    }
}

interface I_OrderInstance{
    public function getInstanceForm();
    public function getInstanceProduct();
}

class Order implements I_OrderInstance{
    private $_form, $_product;

    function __construct(){
        $this->_form = new Form();
        $this->_product = new Product();
    }

    function getInstanceForm(){
        return $this->_form;
    }

    function getInstanceProduct(){
        return $this->_product;
    }

}

$s = new Order();
$s->getInstanceForm()->getName();
$s->getInstanceProduct()->getId();
 
Последнее редактирование:

niko42

Новичок
Это реально только что написанный мною код.
Взял за основу наглядный пример. Есть Заказ - Order, в заказе есть форма (куда клиент вбивает свои данные) - Form и товар в заказе - Product

Вот и интересно каков он этот код =) Интересует сама архитектура построение кода
 

riff

Новичок
я вопрос ещё не читал, просто в глаза бросилось:
class Form implements I_Order, I_Form - она и так уже I_Order
 

Вурдалак

Продвинутый новичок
«Только что написанный» — это значит нереальный. Это значит ты его не пробовал на практике, не набил шишки, не пришел к более удобной модели. Это значит ты просто нафантазировал, попытавшись показать, что знаешь какие-то ключевые слова. Sad but true.
 

niko42

Новичок
я вопрос ещё не читал, просто в глаза бросилось:
class Form implements I_Order, I_Form - она и так уже I_Order
Спасибо, уже заметил.

«Только что написанный» — это значит нереальный. Это значит ты его не пробовал на практике, не набил шишки, не пришел к более удобной модели. Это значит ты просто нафантазировал, попытавшись показать, что знаешь какие-то ключевые слова. Sad but true.
А как же некая абстракция от чего либо?
 

HraKK

Мудак
Команда форума
А никак. Можно делать абстрактное - но обязательно что-то что решает какие-то проблемы. Создай сайт управления зоопарком, фабрику пирожков. Но только то что могло бы быть в реальности и решать чьи-то проблемы
 
  • Like
Реакции: WMix

niko42

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

niko42

Новичок
Уважаемые, я Вам не много поясню. В данный момент стоит вопрос не о том, как написать код на низком уровне (т.е. ядро). А задача стоит в том, что бы другой программист клиент не лез в ядро, а тупо воспользовался интерфейсов
 

hell0w0rd

Продвинутый новичок
niko42, посмотри symfony2/zf2 - там все продумано до мелочей. Это иногда вводит в тупик, но это как раз то, что ты хочешь
 

WMix

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

keltanas

marty cats
А мне, например, не понятно))
Как форма и товар могут быть детьми заказа (или порядка)?
Как интерфейс может быть одновременно экземпляром (interface I_OrderInstance)?
...это если чисто по-человечески пытаться понять.
А вообще, если без троллинга, рекомендация одна: начните использовать какой-нибудь фреймворк; Изучите его код; Почитайте книжки. И понимание, что хорошо, а что плохо со временем придёт. Другой вопрос: "А надо ли?"
 
Сверху