Запитання з тегом «object-oriented-design»

Об'єктно-орієнтоване проектування - це процес планування системи взаємодіючих об’єктів з метою вирішення програмної проблеми.

16
Чи справді нам потрібні мови ОО для управління складністю програмного забезпечення?
Це буде дуже нетехнічним, м'яким питанням, і я не впевнений, чи це правильна платформа. Але я початковий студент CS, тож сподіваюся, ви, хлопці, терпите це. У першому семестрі нас ознайомили з такими поняттями OOP, як інкапсуляція, приховування даних, модульність, успадкування тощо тощо через Java та UML. (Java - моя перша …

15
Чи неправильно використовувати булевий параметр для визначення поведінки?
Час від часу я бачив практику, яка "почувається" неправильно, але я не можу повністю сформулювати, що в цьому не так. А може, це просто мій упередження. Ось: Розробник визначає метод із булевим параметром як один із своїх параметрів, і цей метод викликає інший тощо, і, зрештою, булевий використовується, виключно для …

14
Чи банда чотирьох ретельно досліджувала «Простір візерунка»?
З того часу, як я вперше дізнався про шаблони дизайну Gang of Four (GoF) , щонайменше 10 років тому, у мене складається враження, що ці 23 візерунки повинні бути лише невеликим зразком чогось набагато більшого, що мені подобається називати Pattern Space . Цей гіпотетичний простір шаблонів складається з усіх рекомендованих …

17
Чи краще повернути NULL або порожні значення з функцій / методів, де значення повернення відсутнє?
Я шукаю тут рекомендацію. Я бореться з тим, чи краще повернути NULL або порожнє значення методу, коли значення повернення відсутнє або його неможливо визначити. Взяти для прикладу такі два способи: string ReverseString(string stringToReverse) // takes a string and reverses it. Person FindPerson(int personID) // finds a Person with a matching …

10
Це порушення принципу заміни Ліскова?
Скажімо, у нас є список суб'єктів Завдання та ProjectTaskпідтип. Завдання можуть бути закриті в будь-який час, за винятком випадків, ProjectTasksколи вони не можуть бути закриті, коли вони мають статус Почато. Користувальницький інтерфейс повинен гарантувати, що можливість закрити розпочатий доступ ProjectTaskніколи не доступна, однак у домені є деякі гарантії: public class …

6
Що насправді є "бізнес-логікою"?
Я працюю з веб-розробкою з 2009 року, коли почав з PHP. Коли я перейшов на ASP.NET, я багато чув про DDD та OOAD, де багато уваги приділяється цій "бізнес-логіці" та "правилам бізнесу". Справа в тому, що всі програми, які я розробляв дотепер, стосувалися операцій CRUD, і я цього ніколи не …

13
Як ви виправдовуєте написання ще коду, дотримуючись чистих практик кодування?
Примітка модератора На це питання вже було розміщено сімнадцять відповідей . Перш ніж опублікувати нову відповідь, будь ласка, прочитайте наявні відповіді та переконайтесь, що ваша точка зору вже недостатньо висвітлена. Я дотримувався деяких практик, рекомендованих у книзі "Чистий код" Роберта Мартіна, особливо тих, які стосуються типу програмного забезпечення, з яким …

12
Чому наслідування Square з прямокутника буде проблематичним, якщо ми перекриємо методи SetWidth та SetHeight?
Якщо квадрат - це тип прямокутника, то чому квадрат не може успадкувати прямокутник? Або чому це поганий дизайн? Я чув, як люди кажуть: Якщо ви зробили квадратний похід від прямокутника, то квадрат повинен бути корисним у будь-якому місці, де ви очікуєте прямокутник У чому тут проблема? І чому площа може …

9
Чому я повинен використовувати ін'єкцію залежності?
Мені важко шукати ресурси щодо того, чому мені слід використовувати ін'єкцію залежності . Більшість ресурсів, які я бачу, пояснюють, що він просто передає екземпляр об'єкта в інший екземпляр об'єкта, але чому? Це лише для чистішої архітектури / коду чи це впливає на продуктивність в цілому? Чому я повинен робити наступне? …

4
Моделі багатого домену - як, зокрема, підходить поведінка?
У дискусіях про доменні моделі Річ проти Анемій Інтернет є сповненим філософських порад, але коротким на авторитетні приклади. Мета цього питання - знайти остаточні вказівки та конкретні приклади правильних моделей, керованих доменом. (Ідеально в C #.) На прикладі реального світу ця реалізація DDD здається помилковою: Наведені нижче моделі доменів WorkItem …

11
Чому база "для всіх об'єктів" відбивається в C ++
Stroustrup каже: "Не одразу вигадуйте унікальну базу для всіх своїх класів (клас" Object "). Як правило, ви можете обійтися без неї для багатьох / більшості класів." (Четверта редакція мови програмування C ++, розділ 1.3.4) Чому взагалі базовий клас на все погана ідея, і коли має сенс його створити?

10
Моя запропонована конструкція, як правило, гірша, ніж у колеги - як мені покращитись? [зачинено]
Я займаюся програмуванням протягом декількох років і, як правило, добре, коли справа стосується вирішення проблем та створення малих та середніх сценаріїв, однак я, як правило, не добре розробляти масштабні програми об'єктно-орієнтованим способом. Мало запитань Нещодавно колега, яка має таку ж кількість років досвіду, як я і я, працювала над проблемою. …

12
Маючи прапор, щоб вказати, чи варто нам кидати помилки
Нещодавно я почав працювати в місці з деякими значно старшими розробниками (близько 50+ років). Вони працювали над критичними програмами, що стосуються авіації, де система не могла знизитися. Як результат, старший програміст прагне кодувати таким чином. Він схильний вводити бульові елементи в об’єкти, щоб вказати, чи слід викинути виняток чи ні. …

10
Що означає "Користувач не повинен приймати рішення про те, чи це Адміністратор чи ні. Привілеї чи система безпеки повинні ".
Приклад, використаний у запитанні, передає мінімальну кількість даних щодо функції, що стосується найкращого способу визначення того, користувач є адміністратором чи ні. Одна поширена відповідь: user.isAdmin() Це підштовхнуло коментар, який повторювався кілька разів і багато разів голосувався: Користувач не повинен вирішувати, чи це Адміністратор чи ні. Привілеї чи система безпеки повинні. …

9
Чи є проблемами лише класи з одним (загальнодоступним) методом?
Зараз я працюю над програмним проектом, який виконує стиснення та індексацію кадрів із відеоспостереження. Стиснення працює шляхом розбиття фонових та переднього плану, а потім збереження фону як статичного зображення, а переднього плану - як спрайту. Нещодавно я приступив до перегляду деяких класів, які я призначив для проекту. Я помітив, що …

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.