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

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

20
Кращі книги з теорії та практики архітектури програмного забезпечення? [зачинено]
У моїй компанії є кілька розробників, які хочуть перейти від програмування до архітектури. Які найкращі книги з теорії та практики архітектури програмного забезпечення? Додайте обкладинку, якщо можете. Не соромтеся включати загальні книги, а також книги, що стосуються певної технології.

1
Чому карету використовували для XOR замість експоненції?
Не те, що це справді проблема для тих, хто раніше стикався з цим синтаксичним питанням, але я бачу дику кількість плутанини, що випливає з використання каретки ( ^) як операції XOR замість широко прийнятої математичної операції експоненції. Звичайно, є багато місць, де (неправильне) використання каретки пояснюється та виправляється, але я …

10
Використання GUID як первинного ключа
Зазвичай я використовую ідентифікатори автоматичного збільшення як основні ключі в базах даних. Я намагаюся дізнатися переваги використання GUID. Я прочитав цю статтю: https://betterexplained.com/articles/the-quick-guide-to-guids/ Я усвідомлюю, що ці GUID використовуються для ідентифікації об'єктів на рівні програми. Чи вони також зберігаються як первинний ключ на рівні бази даних. Наприклад, скажіть, у мене …

3
Як представити (перелічити) типи в публічному API
Я працюю над простим API, який я хочу використовувати для власного клієнта і відкривати для публіки в майбутньому. У мене є об'єкти "Item", які можуть мати різні "типи". Тип - це "typedef enum" на даний момент у мене: typedef enum { ItemTypeBool, ItemTypeNumber, ItemTypeDate, } ItemType; (Я можу додати їх …

5
Дозволити ітерацію внутрішнього вектора без протікання реалізації
У мене є клас, який представляє список людей. class AddressBook { public: AddressBook(); private: std::vector<People> people; } Я хочу дозволити клієнтам перебирати вектор людей. Перша думка у мене була просто: std::vector<People> & getPeople { return people; } Однак я не хочу просочувати деталі реалізації клієнту . Я, можливо, захочу підтримувати …
32 c++ 

2
Вибір правильної моделі дизайну
Я завжди визнавав важливість використання дизайнерських моделей. Мені цікаво, як інші розробники йдуть на вибір найбільш підходящого. Чи використовуєте ви ряд характеристик (як блок-схема), щоб допомогти вам прийняти рішення? Наприклад: Якщо об'єкти пов'язані, але конкретний клас ми не хочемо вказувати, розглянемо Анотацію Коли примірник залишається похідним класам, врахуйте Factory Потрібно …

6
Які класи повинні бути автоматичними провідними Spring (коли використовувати ін'єкцію залежності)?
Я вже деякий час використовую ін'єкційну залежність навесні, і я розумію, як вона працює, і які є плюси та мінуси її використання. Однак, коли я створюю новий клас, я часто замислююся - чи повинен цим класом керувати Spring IOC Container? І я не хочу говорити про відмінності між анотацією @Autowired, …

5
Чому C # і Java використовують еталонну рівність за замовчуванням для '=='?
Я деякий час замислювався про те, чому Java та C # (і я впевнений, що інші мови) за замовчуванням посилаються на рівність ==. У програмуванні, яке я виконую (що, безумовно, є лише невеликим набором проблем програмування), я майже завжди бажаю логічної рівності при порівнянні об'єктів замість еталонної рівності. Я намагався …

7
Чому модель дизайну заводських методів корисніша, ніж заняття та називати їх окремо?
З моделей дизайну "Банда з чотирьох" є метод "Фабрика": class Factory(product) case product when a new A when b new B when c new C end new Factory(a) Чому це більш корисно , ніж мати три класи, a, bі cта називаючи їх по окремо?

4
Абстрактний тип даних та структура даних
Мені досить складно зрозуміти ці терміни. Я шукав у Google і читав трохи у Вікіпедії, але все ще не впевнений. Я визначив поки що: Тип абстрактних даних - це визначення нового типу, описує його властивості та операції. Структура даних - це реалізація ADT. Багато ADT можуть бути реалізовані як одна …

7
Функціональне програмування порівняно з OOP з класами
Мене останнім часом цікавлять деякі концепції функціонального програмування. Я вже деякий час користуюсь OOP. Я бачу, як я створив би досить складний додаток в OOP. Кожен об’єкт знав би, як робити те, що робить об’єкт. Або все, що робить і клас батьків. Тому я можу просто сказати, Person().speak()щоб змусити людину …


7
Як швидко шукати дуже великий список рядків / записів у базі даних
У мене є така проблема: у мене є база даних, що містить понад 2 мільйони записів. У кожному записі є рядкове поле X, і я хочу відобразити список записів, для якого поле X містить певний рядок. Кожен запис має розмір близько 500 байт. Щоб зробити це більш конкретним: у графічному …

8
Чи є хорошою практикою використання менших типів даних для змінних для збереження пам'яті?
Коли я вперше вивчив мову C ++, я дізнався, що крім int, float тощо, в мові існують менші або більші версії цих типів даних. Наприклад, я міг би викликати змінну x int x; or short int x; Основна відмінність полягає в тому, що короткий int займає 2 байти пам'яті, а …

9
Коли робити рефактор
Я прочитав більшу частину книги Фаулера "Рефакторинг" і відремонтував багато застосунків у минулому великому і малому. Одна з найскладніших речей, яку я можу навчити, - це "коли" для рефактора. Я схильний робити це на основі відчуття кишки, яке мені чудово служило в минулому. Однак, коли вступати в дискусії з людьми …

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