Интерфейс - передача класса или интерфейса в параметр в чем разница?

StalkerClasses

Новичок
Кто-то про IF-ы говорил

PHP:
<?php
/**
 * Чистый код (рекомендации)
 * 1) Понятен
 * 2) Простая логика
 * 3) Одна задача
 * 4) Минимальные зависимости
 * 5) Нет того, что можно улучшить
 */

// Название переменных должно иметь смысл
// Имена классов не должны содержать глагола
// Имена методов должны говорить что они делают и содержать в своем имени глагол
$dateStart = '----';
class Car;
function openDoor();

// В значении переменных вместо цифр используйте константы
$accessRead = 1; // ?? лучше class::accessRead = 1;)

// Вместо названия переменной $val - лучше назвать что это
foreach($locations as $location){ // вместо foreach($locations as $k => $v)

}

// Избегайте вложенных if, откажитесь от else
function () {
    if ($a == $b) {
        // if(){} // ! вложенные if
        return false;
    }
    if ($dateStart == $dateEnd) {
        return false;
    }
    return true; // ! Вместо else
}

// Избегайте условий с "!" отрицанием
if(!in_array($a,"val")){
}

// При сравнении значений используйте ===
if ($a === $b) { // вместо $a == $b
}

// Количество аргументов функции не должно превышать 7 - иначе она пытается делать слишком много
// Если функция имеет слишком большое тело, ее имеет смысл разбить на подфункции
// Функция должна решать 1 задачу и не иметь побочных эффектов (пишем в файл, но не авторизуем пользователя)
function openDoor(string $openComment = ''){
    // Далее если тело функции идет большым имеет смыслы разбить его на отдельные функции
    // А часть функций вынести в отдельные классы
}
 

AmdY

Пью пиво
Команда форума
Мужики, это работает. Я советовал ему НЕ читать Макконнелла и он таки добрался до огрызков из аналогичной книги Мартина. Но не в коем случае не читай Чистый код Мартина, это буржуйская пропаганда против программирования на 1С.
 

StalkerClasses

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

StalkerClasses

Новичок
PHP:
<?php

// Chosen approach is to consider the closing parameter bracket and
// colon look visually as one character so no space between parenthesis and colon
// and have a preceding space before the type declaration. Demonstrated in method
// named `this()`

class ReturnTypeVariations
{
    public function this(): string
    {
        return;
    }
    
    public function func() :string
    {
        return;
    }
    
    public function func() : string
    {
        return;
    }
    
    public function func():string
    {
        return;
    }
    
    public function func()
    :string{
        return;
    }
    
    public function func()
    :string {
        return;
    }
    
    public function func()
    : string {
        return;
    }
    
    public function func()
    :string
    {
        return;
    }
    
    public function func()
    : string
    {
        return;
    }
}
О, сколько вариантов ...
Для голосования.
 

StalkerClasses

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

Как должен называться трест. Что такое сервис, а что провайдер. Что такое утилита. Где что должно лежать в плане папок. Где можно про это прочитать научно? Я допускаю что например провайдер это паттерн ООП поэтому он так называется.
 

Тугай

Новичок
Сколько бы ты не читал, пока сам не начнешь писать свои классы так и будешь читателем. :)

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

Возми большой проект какой-то, например Magentoo или другой и смотри как там разбили и именовали.
 

StalkerClasses

Новичок
Сколько бы ты не читал, пока сам не начнешь писать свои классы так и будешь читателем. :)

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

Возми большой проект какой-то, например Magentoo или другой и смотри как там разбили и именовали.
Я сейчас наконец то разобрался с тем что такое ООП во многом благодаря cm/s typo3. Там мнооо расширений, я раньше не понимал как они все эту пишут в том числе саму систему, как и cm/s neos.

Понял что есть psr ы , есть стандарт оформления документации в классе. Что есть например паттерн mvc и он идёт во всех расширениям. Кроме этого если скачать 10 расширений то везде будет парка Utils, во многих будет парка Provider.

Но я не понимаю на основе какого стандарта они Ее так именуют. Почему все как один называют Ее одинаково?
 

StalkerClasses

Новичок
Кроме того когда они разрабатывают какое то расширение как они понимают что система даёт с точки зрения классов.
 

StalkerClasses

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

StalkerClasses

Новичок
Хотя наверное с laravel таже история и своя спецификация. Изучать документацию. Но вот про то почему папка Utills так называется вопрос открыт. Где модель про это почитать на русском языке?
 

weregod

unserializer
Не можешь объединить свой поток сознания в одно сообщение? 🤪
 

Тугай

Новичок
Но я не понимаю на основе какого стандарта они Ее так именуют. Почему все как один называют Ее одинаково?
Нет никакого общего стандрта, скорей в каждой команде он свой.

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

Твой превоначальный вопрос про классы и интерфейсы, на самом деле зависит от бюджета, конкретной задачи и выбранному подходу к проектированию.
Сверху вниз, ставятся общие задачи и дробятся на более простые, потом еще на более простые и т.д. Это можно оформлять все в виде классов и интерфейсов.
Грубо топ босс говорит хочу класс App и метод Run и чтоб были иконки на рабочем столе и окна мышкой открывались и закрывались, работайте. :)
 

WMix

герр M:)ller
Партнер клуба
Кто-то про IF-ы говорил

Одно из первоначально предложенных Маккейбом применений состоит в том, что необходимо ограничивать сложность программ во время их разработки. Он рекомендует, чтобы программистов обязывали вычислять сложность разрабатываемых ими модулей и разделять модули на более мелкие всякий раз, когда цикломатическая сложность этих модулей превысит десять
10 на модуль (класс) это 5 не вложенных if/else


Почему нельзя возвращать NULL?
потому, что вызывающему придется написать if
 
Последнее редактирование:
Сверху