|
166 / 90 / 38
Регистрация: 29.06.2015
Сообщений: 1,100
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Как лучше организовать код (проектирование, работа с функциями)?30.01.2019, 11:07. Показов 995. Ответов 5
Метки нет (Все метки)
По мере изучения php, написанию все больших и сложных проектов, возникает все больше вопросов по организации кода.
Я решил объединить несколько небольших вопросов в одну тему т.к. они имеют общий смысл - организация кода, логики в проекте. Наверно это уже проектирование. 1 Пространства имен. Как правильно их задавать? Стандарт PSR (0-4) говорит нам
Тем не менее в некоторых проектах я видел, что это не так. Как я делаю сейчас. В каталоге site есть 2 каталога modul1 и modul2. В каталоге modul1 есть файл functions.php В каталоге modul2 есть файл functions.php Тогда в каталоге modul1, в файле functions.php я задаю пространство имен так
Но у меня имена каталогов прописными. И с заглавной мне не надо. Не состыковка. 2) Функции. Разумеется, хочется писать "самодостаточные" функции. Т.е. требующие минимальное количество данных на входе. Меньше думать, меньше кода - своего рода волшебство. Вызвал - а как дальше, пусть она сама всё там делает, ищет что надо и т.д. Универсальное решение под все ситуации. Пример (псевдокод) Функция пишет лог. А именно вставляет в базу id пользователя и код ошибки. Вариант 1. На входе только код ошибки.
А теперь представим, что у нас такой код проекта (псевдокод)
Логично изменить функцию, чтобы она была оптимальной для кода проекта.
И код функции будет таким.
Что делать? Плодить кучу подобных функций - c id, без id? Неясно. 3) Аргументы функции. Пусть есть такая функция (псевдокод)
Предположим, что в 90% при вызове функции последние аргументы всегда будут 'standart text 1', 'standart text 2', 'standart text 3'. Тогда
Как тут быть?
0
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 30.01.2019, 11:07 | |
|
Ответы с готовыми решениями:
5
Как лучше организовать работу с функциями? Одномерные массивы. Все работает, вроде правильно. Как лучше организовать код!? XML проектирование... и как лучше поступить. |
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
|
| 30.01.2019, 11:43 | |
|
useruser, речь именно о функциях (процедурном подходе), не ООП?
0
|
|
|
166 / 90 / 38
Регистрация: 29.06.2015
Сообщений: 1,100
|
|||||||||||||||||
| 30.01.2019, 12:02 [ТС] | |||||||||||||||||
|
При очередной разработке проекта встали вот такие вопросы. Пока решил всё организовать с помощью функций и пространства имен. такое разделение. Также пока не понятно, как организовывать - разделять функции. По какому признаку? Та же функция логирования пишет в бд логов. Скорее всего все функции связанные с логированием нужно поместить в один файл с
Становится вообще непонятна организация проекта. Но это уже отдельный вопрос...
0
|
|||||||||||||||||
|
1306 / 998 / 232
Регистрация: 01.10.2018
Сообщений: 3,884
|
|
| 30.01.2019, 14:08 | |
|
Это деление было придумано прежде всего для совмещения кода из разных библиотек разных разработчиков. Для чего-то масштабного наподобие фреймворков можно использовать деление фреймворк-компоненты, что по сути то же самое, т.к. здесь "фреймворк" - бренд, ассоциируемый с вполне конкретной группой разработчиков. Если код пока не рассчитан на массовое повторное использование, можете использовать ваше деление сайт-модуль или вообще не делать никакой унификации собственных библиотек под массовые "стандарты". И PSR изначально под ООП писались. Когда дойдете, можно будет предметно обсуждать. Если не дойдете, ничто не мешает совмещать код, написанный по "стандартам", со своим.
0
|
|
|
166 / 90 / 38
Регистрация: 29.06.2015
Сообщений: 1,100
|
||
| 30.01.2019, 14:46 [ТС] | ||
|
Бывает, что часть модулей из старого проекта, включается в новый. В новом - старые и новые функции. В старом - только старые. Что то чистить и искать - долго. Подключаем оба файла без пространств имен - конфликт т.к. имена функций совпали. А так новый проект - новый вендор. И всё хорошо. Пространства имен действительно необходимость. Хотя раньше писал вендора как префикс функции.
0
|
||
|
1306 / 998 / 232
Регистрация: 01.10.2018
Сообщений: 3,884
|
||
| 30.01.2019, 15:48 | ||
|
0
|
||
| 30.01.2019, 15:48 | |
|
Помогаю со студенческими работами здесь
6
Как правильно организовать заголовочный файл со своими функциями?
Как лучше организовать сортировку? Как лучше организовать массив? Как лучше организовать структуру? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|