Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.11.2023, 12:28   #11
Liris
Пользователь
 
Регистрация: 09.05.2012
Сообщений: 22
По умолчанию

Цитата:
Сообщение от Deenwar Посмотреть сообщение
Даже в начале пути можно уже понять
Начало пути у всех разное. Если вы уже немного понимаете, что нужно делать в программировании - можно и пытаться делать "как надо". Но если вы путаете инкремент с декрементом и вызов функции для вас это какое-то магическое событие - стоит сосредоточиться непосредственно на программировании, не задумываясь о плохом и хорошем стиле.
Лучше научиться писать код, который работает, нежели задумываться о количестве пробелом и правильности расстановки переносов. Для начала, конечно же.

Однако чем раньше вы начнете писать читабельный код - тем лучше для вас же (в том числе и потому, что вам охотнее будут помогать, если код не будет выглядеть, как будто вы на клавиатуру сели). Но есть хорошие помощники - установите любую современную IDE (я использую PHPStorm, но есть и хорошие бесплатные решения), и она будет помогать вам красиво оформлять код. Само начнет получаться.

Цитата:
Сообщение от Deenwar Посмотреть сообщение
С принципами ООП ознакомился и понял, что это реально лучше отложить на потом пока что
И пропустить больше половины стандартов, которые описывают классы. Все равно потом перечитывать придется.

Цитата:
Сообщение от Deenwar Посмотреть сообщение
Но! Просто обязательно нужно пару из них создать самому что бы въехать
Это очень хорошая практика для обучения. А в работе лучше пользоваться более профессиональными решениями, даже если поначалу кажется иначе (просто очень быстро придет осознание, что даже нормальный класс для работы с базой данных пишется и отлаживается довольно много часов, что уж говорить про более серьезные библиотеки).

Цитата:
Сообщение от Deenwar Посмотреть сообщение
очень буду рад критике, которая поможет максимально эффективному обучению.
Все мы учились понемногу, чему-нибудь и как-нибудь. Не стесняйтесь задавать вопросы (сначала всезнающему гуглу, и только если он окажется бессилен помочь - тогда уже и людям). Дорогу осилит идущий.
Liris вне форума Ответить с цитированием
Старый 03.11.2023, 15:01   #12
Valick
Форумчанин
 
Регистрация: 27.04.2022
Сообщений: 495
По умолчанию

Цитата:
Сообщение от Liris Посмотреть сообщение
использую PHPStorm, но есть и хорошие бесплатные решения
слово хорошие в этом предложении лишнее
Valick вне форума Ответить с цитированием
Старый 07.11.2023, 08:14   #13
Liris
Пользователь
 
Регистрация: 09.05.2012
Сообщений: 22
По умолчанию

Цитата:
Сообщение от Valick Посмотреть сообщение
слово хорошие в этом предложении лишнее
Если с коммерческими продуктами сравнивать - бесплатные, как правило, закономерно проигрывают. Но, при отсутствии желания использовать коммерческие продукты, я бы выделил бесплатные решения - Netbeans и VS Code. Обе среды довольно пустоваты из коробки, но это всяко лучше чем Sublime Text или Notepad++. Имхо.

Сам я пользовался Netbeans, пока наша компания не закупила всем сотрудникам лицензии на шторм. Вполне функциональная среда, разве что в 2023 она выглядит немного олдскульно.
Liris вне форума Ответить с цитированием
Старый 07.11.2023, 12:39   #14
Valick
Форумчанин
 
Регистрация: 27.04.2022
Сообщений: 495
По умолчанию

Мне больше всех понравился Eclipse но там действительно надо сильно постараться с установкой кучи плагинов и их настройкой.
VS Code использую только когда надо открыть какой-нибудь огромный XML файл.

P.S. Из шторма отстрелили апсорс, это прям печаль.
Valick вне форума Ответить с цитированием
Старый 07.11.2023, 17:10   #15
Deenwar
 
Аватар для Deenwar
 
Регистрация: 31.10.2023
Сообщений: 8
По умолчанию

Liris,
Воу, спасибо за столь обширный ответ.

Цитата:
Начало пути у всех разное. Если вы уже немного понимаете, что нужно делать в программировании - можно и пытаться делать "как надо". Но если вы путаете инкремент с декрементом и вызов функции для вас это какое-то магическое событие - стоит сосредоточиться непосредственно на программировании, не задумываясь о плохом и хорошем стиле.
Лучше научиться писать код, который работает, нежели задумываться о количестве пробелом и правильности расстановки переносов. Для начала, конечно же.

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

Я бегло просмотрел разницу между IDE для PHP и решил что нужно использовать PHPStorm. Да, он платный, но он топ если ты не бек и JS планируешь использовать в работе. Тем более, что можно использовать 30ти-дневный пробный период. Сейчас как раз в работе над его изучением и накидывании на него дебагера и снифера.

Цитата:
И пропустить больше половины стандартов, которые описывают классы. Все равно потом перечитывать придется.
Я бы был очень признателен, если вы объясните полезность ООП на максимально нубском. Почему нужно заострить внимание даже в самом начале на эту область?
Deenwar вне форума Ответить с цитированием
Старый 07.11.2023, 22:30   #16
Liris
Пользователь
 
Регистрация: 09.05.2012
Сообщений: 22
По умолчанию

Цитата:
Сообщение от Deenwar Посмотреть сообщение
Я бы был очень признателен, если вы объясните полезность ООП на максимально нубском. Почему нужно заострить внимание даже в самом начале на эту область?
Да хотя бы потому, что это фактически стандарт разработки на РНР в наше время.

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

Основные принципы ООП крутятся вокруг: абстракции, инкапсуляции, полиморфизма и наследования.

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

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

- полиморфизм позволяет работать с разными реализациями одним и тем же способом.
Представьте, что мы продолжаем строить дом. Собираем каркас. Используем шуруповерт и саморезы. Эти саморезы из латуни, а вон те стальные, а эти, похоже, алюминиевые. Все они разные, но мы используем их одним способом - прикладываем шуруповерт и вкручиваем в балку.

- наследование позволяет передавать часть функциональности от одного класса к другому.
Мы уже достроили свой дом и заселяем его жильцами. Первой в дом заходит кошка. Потом заводим собаку и заносим черепаху. У нас трое животных, и если представлять их как классы, то это были бы классы - Cat (кошка), Dog (собака) и Turtle (черепаха). У них у всех есть общие черты, которые можно было бы описать в одном классе Animal (животное). У всех животных можно выделить общие способности - есть, спать, перемещаться. Нет нужды каждому животному отдельно описывать эти способности, опишем все это в классе Животное, и укажем что Кошка, Собака и Черепаха являются наследниками класса Животное (при этом автоматически приобретая все способности, описанные в классе Животное).
Liris вне форума Ответить с цитированием
Старый 07.11.2023, 22:34   #17
Liris
Пользователь
 
Регистрация: 09.05.2012
Сообщений: 22
По умолчанию

Реализуя вышеизложенные принципы, мы упрощаем себе жизнь при разработке больших приложений, потому что:
1) мы описываем сложную логику на низком уровне и больше к ней не возвращаемся, оперируя более высокоуровневыми методами (это, кстати, используется и в процедурном программировании)
2) скрываем детали реализации, предоставляя простой интерфейс для использования (и снова простая функция в процедурном стиле может делать то же самое)
3) позволяет указывать контекст, в рамках которого применяется та или иная функция (в ооп функции называются методы).

Тут чуть подробнее. Приведу пример.

Допустим у нашего приложения есть модуль для работы с сетевым принтером. И у него есть функция print(), которая позволяет вывести текст на печать:

Код:
// printer.php
function print($text) {
	// отправляем документ на принтер
}
И еще мы продаем всякий мерч, в том числе футболки, на которых печатаем всякие прикольные картинки. И логика реализована в скрипте shirt.php, и там тоже есть функция print().

Код:
// shirt.php
function print($image) {
	// печатаем рисунок на футболке
}
Вопрос. Что произойдет, если в одном приложении мы подключим оба этих файла? Как приложение поймет, какую функцию print() нам нужно использовать? Очевидно, что ничего хорошего не выйдет.

Теперь попробуем описать эту логику при помощи классов. И не испытаем проблем:

Код:
class Printer {
	public function print($text) {
		// отправляем документ на принтер
	}
}

class Shirt {
	public function print($image) {
		// печатаем рисунок на футболке
	}
}

$printer = new Printer();
$printer->print('Hello, paper!');

$shirt = new Shirt();
$shirt->print('dragon.png');
Liris вне форума Ответить с цитированием
Старый 30.12.2023, 08:32   #18
Ottava
Форумчанин
 
Регистрация: 05.09.2017
Сообщений: 157
По умолчанию

Цитата:
Сообщение от Liris Посмотреть сообщение
ООП ... позволяет более удобным способом (по сравнению с процедурным подходом) разбивать код на отдельные модули.

Основные принципы ООП крутятся вокруг: абстракции, инкапсуляции, полиморфизма и наследования.
При процедурном подходе быстро исчерпывается пространство имён (namespace).

Основные преимущества использования ООП:
  • Повторное использование: Объект - это логический объект для решения специфических поставленных проблем. У него есть комплект свойств и методов и он может взаимодействовать с другими объектами. Объект может быть абсолютно независимым или может зависеть от других объектов. Другие разработчики могут подключить ваш класс к своему проекту и использовать его не боясь, что он нарушит процесс их разработки. Это позволяет избежать DRY, что расшифровывается как Don’t Repeat Yourself ( не повторяйся).
  • Рефакторинг: процесс изменения внутренней структуры программы, не затрагивающий её внешнего поведения и имеющий целью облегчить понимание её работы (рефакторинг), делается относительно легко. Ибо при ООП все объекты - это маленькие элементы и содержат свои свойства и методы как часть себя.
  • Расширяемость: одна из основных возможностей ООП - это расширяемость функциональности. При этом , вы по прежнему можете сохранить прежнюю совместимость объекта — он прекрасно работать и с прежним кодом. Вы можете расширить объект и создать абсолютно новый, который будет содержать все необходимые свойства и методы родительского объекта, от которого происходит новый, а потом уже добавить в него новые функции. Это называется “наследование” и это очень важная возможность ООП.
  • Поддержка: объектно-ориентированный код легче поддерживать так как
    он следует весьма жёстким соглашениям написания кода и пишется в самопоясняющейся форме и имеет понятную внутреннюю структуру. Когда работает команда разработчиков, ООП позволяет распределять ваш код между членами команды, и разработчики могут работать практически независимо друг от друга. В конечном итоге объединить все части в одно приложение не составит большого труда.
  • Эффективность: Идея ООП в действительности была разработана для повышения эффективности и облегчения процесса разработки. Более того, в ООП вы можете вы можете размышлять над вашими решениями в более удобной форме, чем в процедурном подходе. Поскольку вы разбиваете вашу проблему на несколько маленьких проблем, и вы находите решение для каждой из них отдельно.
Ottava вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Fortran стандарты Freemandes Помощь студентам 0 11.05.2014 13:47
Стандарты IEEE Sam Gold Обсуждение статей 2 10.03.2011 14:16
где искать стандарты? Пепел Феникса Общие вопросы по программированию, компьютерный форум 4 14.05.2010 21:43
Языковые стандарты _SERGEYX_ Общие вопросы Delphi 5 27.02.2009 09:53
Язык и региональные стандарты All517 Общие вопросы Delphi 4 13.08.2008 07:06