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

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

11
Чому у C ++ є "невизначена поведінка" (UB), а інші мови, такі як C # або Java, не мають?
Цей пост переповнення стеку містить досить вичерпний перелік ситуацій, коли специфікація мови C / C ++ заявляється як "невизначена поведінка". Однак я хочу зрозуміти, чому інші сучасні мови, такі як C # або Java, не мають поняття "невизначена поведінка". Це означає, що дизайнер компілятора може керувати всіма можливими сценаріями (C …

5
Чому Python не дозволяє багаторядкові лямбда?
Чи може хтось пояснити конкретні причини, чому BDFL вирішує зробити лямбда Python єдиною лінією? Це добре: lambda x: x**x Це призводить до помилки: lambda x: x**x Я розумію, що створення лямбда-багаторядкових якось "порушить" звичайні правила відступу та вимагатиме додати більше винятків, але чи не варто цього переваги? Наприклад, подивіться на …
50 lambda  python 

2
Чи слід завжди використовувати "є" як префікс для булевих змінних? [зачинено]
Чи слід завжди використовувати isв якості префікса булеві змінні? А що з булевими, які щось вказують на минуле? Треба писати isInitializedчи wasInitialized? Чи слід писати для властивостей IsManyMembersабо HasManyMembers? Чи є найкращі практики? Або я просто повинен писати відповідно до англійських правил?

8
Чи слід зберігати створену документацію у сховищі Git?
Коли ви використовуєте такі інструменти, як jsdocs , він генерує статичні файли HTML та його стилі у вашій кодовій базі на основі коментарів у вашому коді. Чи слід перевіряти ці файли у сховищі Git чи їх слід ігнорувати .gitignore?

4
Чому погана ідея створити загальний сетер та геттер з відображенням?
Нещодавно я написав цю відповідь на питання про те, як уникнути наявності геттера та сетера для кожної змінної змінної. У той час у мене було лише важковербальне відчуття кишки, що це погана ідея, але ОП явно запитував, як це зробити. Я шукав тут питання, чому це може бути проблемою, і …
49 java  reflection 

6
Чому багато функцій, які повертають структури в С, насправді повертають покажчики на структури?
Яка перевага повернення вказівника на структуру, на відміну від повернення всієї структури в returnоператорі функції? Я говорю про такі функції, як fopenта інші функції низького рівня, але, ймовірно, є функції вищого рівня, які також повертають покажчики до структур. Я вважаю, що це скоріше вибір дизайну, а не просто питання програмування, …

7
Керування та організація масово збільшеної кількості занять після переходу на SOLID?
Протягом останніх декількох років ми поступово переходимо до прогресивно вдосконаленого письмового коду, кілька кроків дитини одночасно. Ми нарешті починаємо переходити на щось, що принаймні нагадує СОЛІД, але ми ще не зовсім там. З моменту переходу, одна з найбільших скарг розробників полягає в тому, що вони не витримують експертного огляду та …

2
Які поліпшення MVP над MVC?
Я три дні читав про моделі Model-View-Controller (MVC) та Model-View-Presenter (MVP) . І є одне питання, яке мене дуже турбує. Чому розробники програмного забезпечення винайшли MVP, коли вже був MVC? З якими проблемами вони зіткнулися, що MVC не вирішив (або вирішив погано), але MVP може вирішити? Які проблеми призначений вирішити …

7
Два структури з однаковими членами, але різними назвами, це гарна ідея?
Я пишу програму, яка передбачає роботу як з полярними, так і декартовими координатами. Чи має сенс створювати два різних структур для кожного виду точок, одна з яких Xі Yчленів і один з Rі Thetaчленами. Або це занадто багато, і краще мати лише одну структуру з членами firstі secondв якості членів. …
49 design 

11
"Легко міркувати про" - що це означає? [зачинено]
Я чув багато разів, коли інші розробники використовують цю фразу, щоб "рекламувати" деякі зразки або розробляти кращі практики. Здебільшого ця фраза використовується, коли ви говорите про переваги функціонального програмування. Фраза "Легко міркувати про" була використана такою, якою вона є, без будь-яких пояснень чи зразка коду. Тож для мене це стає …

6
Багато невеликих запитів порівняно з декількома великими запитами (API Design)
В даний час я працюю над проектом в організації таким чином: Клієнт - отримує дані з основного сервера через REST api. Сервер - запитує дані з різних інших серверів через сторонні API Сторонні API - сервіси, які не знаходяться під моїм контролем, які надають дані серверу (Reddit, Hackernews, Quora тощо) …

10
Чи слід уникати спеціальних об'єктів як параметрів?
Припустимо, у мене є власний об'єкт, студент : public class Student{ public int _id; public String name; public int age; public float score; } І клас Window , який використовується для показу інформації студента : public class Window{ public void showInfo(Student student); } Це виглядає цілком нормально, але я виявив, …

3
C ++ сильно набрав typedef
Я намагався придумати спосіб декларування сильно набраних типів, щоб знайти певний клас помилок на етапі компіляції. Часто буває так, що я набираю int на кілька типів ідентифікаторів, або вектор для позиціонування або швидкості: typedef int EntityID; typedef int ModelID; typedef Vector3 Position; typedef Vector3 Velocity; Це може зробити намір коду …
49 c++  c++11  type-safety 

8
Чи є причина мати нижній тип мови програмування?
Нижній тип - це конструкція, головним чином з'являється в математичній теорії типів. Його ще називають порожнім типом. Це тип, який не має значень, але є підтипом усіх типів. Якщо тип повернення функції - це нижній тип, це означає, що він не повертається. Період. Можливо, він зациклюється назавжди, або, можливо, це …

5
Чому всі функції <алгоритму> приймають лише діапазони, а не контейнери?
У програмах є багато корисних функцій &lt;algorithm&gt;, але всі вони працюють на «послідовностях» - парах ітераторів. Наприклад, якщо я маю контейнер і люблю бігати std::accumulateпо ньому, мені потрібно написати: std::vector&lt;int&gt; myContainer = ...; int sum = std::accumulate(myContainer.begin(), myContainer.end(), 0); Коли все, що я маю намір зробити: int sum = std::accumulate(myContainer, …

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