Розробка програмного забезпечення

Питання та відповіді для професіоналів, науковців та студентів, які працюють у життєвому циклі розвитку систем

7
Як уникнути переписування частин програми
Я працюю в компанії над проектом для їх відділу продажу. Це моя перша професійна робота з програмування, але я кодую себе і навчаюсь роками. Частина проекту передбачає взяття деяких даних та їх поєднання з введенням для отримання та графіку. Потім збережіть дані ... і так далі. Тож я написав код …

4
Про хрестовий похід дати моєї бази даних: Дійсно? Варто? Хтось ще відчуває це?
Я витрачаю багато часу, відповідаючи на питання SQL над SO. Я часто стикаюся із запитами цієї лайки: SELECT * FROM person WHERE birthdate BETWEEN '01/01/2017' AND '01/03/2017' SELECT * FROM person WHERE birthdate BETWEEN '2017-01-01' AND '2017-03-01' SELECT * FROM person WHERE birthdate BETWEEN 'some string' AND 'other string' тобто …

2
Як називається ця методика програмування?
Я натрапив на цю техніку програмування, виконуючи парне програмування в інтерв'ю, і не зміг знайти ім'я в Google. Ідея полягає в тому, що спочатку ви пишете вираз, який використовує змінні, а потім ви пишете код, який згодом обчислює змінні. Щоб використовувати тут якийсь приклад коду: private bool ValidPolicyNumber(string policyNumber) { …

1
Використання методу Java за замовчуванням
В протягом багатьох десятиліть це було так , що інтерфейси були тільки лише (тільки) для визначення сигнатури методи. Нам сказали, що це "правильний спосіб робити речі ™". Потім вийшов Java 8 і сказав: Ну, е-е, тепер ви можете визначити методи за замовчуванням. Треба бігти, до побачення. Мені цікаво, як це …

6
Очистити OOP спосіб відображення об’єкта на його презентаторі
Я створюю настільну гру (наприклад, шахи) на Java, де кожен твір є власним типом (наприклад Pawn, Rookтощо). Для частини програми GUI мені потрібно зображення для кожної з цих частин. Оскільки робити мислить, як rook.image(); порушує розділення інтерфейсу користувача та бізнес-логіки, я створять різного презентатора для кожної деталі, а потім зіставляю …

8
"Віддавайте перевагу складу над спадщиною" - Є єдиною причиною захисту від змін підпису?
Ця сторінка виступає за склад над успадкуванням наступним аргументом (перефразовуючи це моїми словами): Зміна підпису методу надкласу (який не був переосмислений у підкласі) спричиняє додаткові зміни у багатьох місцях, коли ми використовуємо Inheritance. Однак, коли ми використовуємо Composition, необхідна додаткова зміна є лише в одному місці: Підклас. Це насправді єдина …

4
Як мені написати тест на чистий метод, який нічого не повертає?
У мене є купа класів, які займаються валідацією значень. Наприклад, RangeValidatorклас перевіряє, чи є значення у вказаному діапазоні. Кожен клас валідатора містить два способи: is_valid(value)який повертає Trueабо Falseзалежно від значення, і ensure_valid(value)який перевіряє вказане значення, або не робить нічого, якщо значення дійсне, або викидає конкретний виняток, якщо значення не відповідає …

8
Scrum команда не дотримується принципу YAGNI
Під час зустрічі з SCRUM команда продукту обговорювала функцію в API, яку споживатиме мобільний додаток. У нас був макет, який показав, як повинен виглядати екран і які ключові елементи він повинен містити ("макет"). На підставі цього та обговорення, який я мав із власником продукту, я створив прототип відповіді API (HAL …

2
Чи є які-небудь системи побудови, які включають у графік відносний очікуваний час завдання?
Ось невелика ілюстрація мого питання: Припустимо роботу зі зборки, яка складається з 4 незалежних завдань з назвою AD. D забирає більше часу, ніж зміна AC. Система побудови, яка не може включати відносні часи завдань, може запланувати такі завдання: --------------------------------------- CPU1: A | C | --------------------------------------- CPU2: B | D | …

4
Великий клас з єдиною відповідальністю
У мене Characterклас 2500 ліній, який: Відстежує внутрішній стан персонажа в грі. Навантажує та зберігає цю державу. Обробляє ~ 30 вхідних команд (як правило, = пересилає їх до Game, але на деякі команди лише для читання відповідають негайно). Отримує ~ 80 дзвінків Gameстосовно дій, які він вживає, та відповідних дій …

1
Яка різниця між MVP та чистою архітектурою
Питання самопояснювальне, лише щоб додати мої думки: Наскільки я прочитав, презентаційний шар у «Чистій арці» несе таку саму відповідальність, як і MV у MVP. Як один вирішує вибрати один візерунок замість іншого?
13 architecture  mvp 

5
Чи є "статичний інтерфейс" хорошою практикою?
Нещодавно я помітив, що в інтерфейсах є статичні методи. Як і у статичних полів інтерфейсу, є цікава поведінка: вони не передаються у спадок. Я не впевнений, що корисне у фактичних інтерфейсах, які потрібно реалізувати. Однак це дозволяє програмісту створювати інтерфейси, які є просто конвертами для статичних матеріалів, як, наприклад, класи …
13 java  java8 

4
Чи дотримуйтесь SOLID, читання та запис файлів є двома окремими обов'язками?
Я тільки починаю досліджувати SOLID, і я не впевнений, читання з файлів і запис у файли несуть ту саму відповідальність. Цільовий тип одного типу; Я хочу читати і писати .pdf у своїй програмі. Додаток знаходиться в Python, якщо це має значення.

3
стратегії пакетів та версій у середовищі з декількома сховищами
Ми невелика фірма з кількома командами, які керують власними сховищами git. Це веб-платформа, і артефакти кожної команди розгортаються в кінці дня для проведення нічних тестів. Ми намагаємось формалізувати процес навколо версій та упаковки. Кожна команда має головну галузь, де вони щодня розробляють. Члени кожної команди із забезпечення якості хочуть, щоб …

1
Чи можна застосовувати методологію TDD зверху вниз?
Мені незрозуміло, як TDD, методологія, розглядає такий випадок. Припустимо, я хочу реалізувати алгоритм злиття в Python. Починаю писати assert mergesort([]) === [] і тест не вдається NameError: назва 'mergesort' не визначено Потім додаю def mergesort(a): return [] і мій тест проходить. Далі додаю assert mergesort[5] == 5 і мій тест …
13 tdd 

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