Чи справді функціональний розпад є антипатерном?


9

Поки я читав найгірші анти-шаблони, з якими ви стикалися , я натиснув на посилання в цій публікації, щоб ознайомитись на веб-сайті про анти-шаблони.

І http://sourcemaking.com/antipatterns/functional-decomposition сторінка мене здивувала.

Наскільки поганий цей антидіапазон, і чи взагалі є антидіапазон? Тому що, хоча в даний час я займаюся в основному програмуванням OOP, я все ще відчуваю небажання проти чистої мови OOP - усіх мов, як Java, а також методів дизайну, які вони пропонують. І я здогадуюсь, я все ще маю деякі риси функціонального програмування, поки пишу код.

І це викликало питання, чи я помиляюся, дотримуючись функціонального стилю OOP +, чи це поширене в промисловості і насправді не так вже й погано.

Що я знаю з досвіду, це те, що функціональний стиль OOP + не повністю сумісний з чистими розробниками OOP. Але в той же час, хоча у розробників OOP виникають проблеми з функціональною розробкою OOP +, контраргументом є те, що рішення OOP досить часто надмірно розроблені і занадто важкі у використанні, і, з мого досвіду, навіть не було простіше, а насправді представив кілька сліпих плям для ДУЖЕ серйозних помилок, які можна приховати.

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

Проблема OOP також була підкріплена посиланням з іншої публікації в тій же темі. Посилання розглядає OOP у стилі Java http://chaosinmotion.com/blog/?p=622

То яке загальне ставлення до змішування функціонального програмування з OOP? І який баланс повинен домагатися розробник?


1
Ваш заголовок та орган запитань задають кілька суміжних, але абсолютно різних питань, деякі з яких звучать риторично. У мене виникають труднощі з'ясувати, що саме ви тут просите.
blueberryfields

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

1
Питання зрозуміле. Не слухайте blueberryfields.
jojo

5
Зрозуміло, що для завзятостей ООС все, що знаходиться поза досяжністю ООП, є "антипатерном". Насправді найгірший можливий антипатерн - це важке зловживання самим ООП.
SK-логіка

Відповіді:


8

Перш за все, функціональне програмування - це те, що роблять усі класні діти. Anti-Pattern справді говорив про процедурне програмування (було б зрозуміліше, якби методику називали "процедурною декомпозицією", але це не так), і я думаю, що ви теж були.

Антидіаграма розповідала про погані способи написання процесуального коду об'єктно орієнтованою мовою, інша сторінка розповідала про погане написання Java - правда, немає мови настільки фантастичної, що ви можете робити все, що хочете зробити, але не можете написати неправильний код.

На практиці я бачив трохи більше інженерії в об'єктно-орієнтованому коді, ніж процедурний - трохи менше в інженерії і трохи більше над інженерією.

У вашому випадку це залежало б від конкретності, і я не впевнений, що ви насправді робите в процедурному стилі. Це правильно, зрозуміло, перевіряється, легко змінюється тощо? Критерії оцінювання кодексу повинні базуватися на таких практичних питаннях, а не на чистоті одного конкретного стилю. Здається, що у вашому випадку розумні та знаючі люди можуть не погодитись (і зробити це!) Щодо цих проблем, і якщо так, то, мабуть, немає об'єктивного способу визначити істинність справи.


2
Ваша відповідь почалася добре, але потім ви отримали розпливчастість і неприхильність. Я прочитав статтю, що ОП пов'язана з функціональним розкладом, і це жахливий антипатерн, який практикують розробники процедур, які намагаються перетворити свій стиль програмування в об'єктно-орієнтовану парадигму. Так що ні, це не залежить від специфіки.
Роберт Харві

але я не думаю, що Кодер вважає, що анти-модель - це те, що він особисто зробив (і я не маю особливих причин сумніватися в ньому). Його питання (одне з них насправді) полягало у тому, чи може програмування процедурного стилю відповідати мовою об’єкта (напевно, більше, як у статичній функції Java, показаній у блозі Java rant). І це залежить від специфіки того, що він закодував. (Я робив передмову з "У вашому випадку"). Я думаю, що ви читаєте питання в основному "Чи слід програмувати, як в анти-шаблоні?", Що, очевидно, було б погано, - але Кодер це знає, я думаю.
psr

4
Навіть у такий спосіб - процедурна декомпозиція є дійсною технікою, і відхилення її як не настільки сумісної з ООП є чистим фанатизмом. Нехай розцвітають усі квіти. Усі методики дійсні, якщо їх використовувати розумно. Дотримуватися однієї конкретної методології зовсім не мудро.
SK-логіка
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.