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

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

9
Чи потрібно завжди писати об'єктно-орієнтований код, дотримуючись схему дизайну?
Чи можлива схема дизайну для будь-якої об'єктно-орієнтованої програми? Я запитую це тому, що нещодавно я побачив реалізацію Doorкласу з a Lock. Це було частиною тесту, у відповіді сказано, що код відповідає шаблону Null Object: class Lock { public: virtual void close() = 0; virtual void open() = 0; virtual bool …

8
Чи належна практика покладатися на те, що заголовки будуть включені транзитивно?
Я прибираю включені в проект C ++, над яким я працюю, і мені постійно цікаво, чи слід явно включати всі заголовки, які використовуються безпосередньо в певному файлі, чи я повинен включати лише мінімальний мінімум. Ось приклад Entity.hpp: #include "RenderObject.hpp" #include "Texture.hpp" struct Entity { Texture texture; RenderObject render(); } (Припустимо, …
37 c++  c  headers  include 

11
Підкласи, що стосуються лише конструктора: це антитіло?
Я мав дискусію з колегою, і у нас виникли суперечливі інтуїції щодо мети підкласифікації. Моя інтуїція полягає в тому, що якщо основною функцією підкласу є вираження обмеженого діапазону можливих значень його батьківського, то, ймовірно, це не повинно бути підкласом. Він заперечував протилежну інтуїцію: підкласинг представляє більш "специфічний" об'єкт, і тому …

9
Чи створення підкласів для конкретних випадків є поганою практикою?
Розглянемо наступну конструкцію public class Person { public virtual string Name { get; } public Person (string name) { this.Name = name; } } public class Karl : Person { public override string Name { get { return "Karl"; } } } public class John : Person { public override …

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

6
Чому тестування мови не підтримується функцією на рівні синтаксису?
Ви можете знайти нескінченний список блогів, статей та веб-сайтів, що рекламують переваги тестування вашого вихідного коду. Майже гарантовано, що розробники, які запрограмували компілятори для Java, C ++, C # та інших набраних мов, використовували тестування одиниць для перевірки їх роботи. То чому тоді, незважаючи на свою популярність, тестування відсутнє у …

4
Навіщо хтось вкладати час у Microsoft «Рослін»?
Я щойно читав деякі документи та приклади від Microsoft "Roslyn", і ця концепція здається дуже цікавою. З того, що я можу сказати, він відкриває чорну скриньку, яка є компілятором, і надає інтерфейс, який ми можемо використовувати для отримання інформації та показників про код, написаний у Visual Studio. Рослін також, здається, …

4
Чому віддають перевагу нестатичним внутрішнім класам над статичним?
Це питання стосується того, щоб зробити вкладений клас у Java статичним класом вкладених або внутрішнім вкладеним класом. Я шукав тут і в Stack Overflow, але насправді не міг знайти жодних питань щодо дизайнерських наслідків цього рішення. Я знайшов запитання про різницю між статичними та внутрішніми вкладеними класами, що мені зрозуміло. …

11
Переконайтесь, що кожен клас несе лише одну відповідальність, чому?
Відповідно до документації Microsoft, статті статті Wikipedia SOLID або більшості ІТ-архітекторів, ми повинні гарантувати, що кожен клас несе лише одну відповідальність. Мені хотілося б знати, чому, якщо всі, здається, згодні з цим правилом, схоже, ніхто не погоджується з причинами цього правила. Деякі кажуть, що це краще обслуговування, деякі кажуть, що …

5
Що робити, коли перед вами стоїть завдання програмування, якого ви ніколи не робили?
Я розпочав свою кар'єру як .NET розробник 3 місяці тому, і після довгого плану навчання різноманітним технологіям, моделям та концепціям розробники, які мене контролювали, вирішили, що я готовий приєднатися до одного з багатьох проектів, якими займається компанія. Я дуже рада, що нарешті змогла почати кодування. Команда, до якої я приєднався, …

5
Наскільки легко зламати JavaScript (у браузері)?
Моє запитання стосується безпеки JavaScript. Уявіть систему аутентифікації, де ви використовуєте рамку JavaScript, як Backbone або AngularJS , і вам потрібні захищені кінцеві точки. Це не проблема, оскільки сервер завжди має останнє слово і перевірить, чи маєте ви право робити те, що хочете. Але що робити, якщо вам потрібно трохи …

3
Різниця між REPL та інтерактивною оболонкою
Питання Noob. Я не зовсім в змозі сказати різницю між REPL та інтерактивною оболонкою, лише прочитавши визначення у Вікіпедії. Wiki зазначає, що REPL - це особливий тип інтерактивної мовної оболонки. Це правильне підмножина? Визначення Wiki, схоже, обмежує термінологію REPL лише мовами, що нагадують Lisp, тоді як заявлені властивості насправді не …

8
Чи дійсно можливо мати "корисну" мову програмування, яка не є Тюрінгом повною?
Якщо прийнято, що мова має бути Тюрінг повною, щоб бути будь-якою користю, чи справді можливо мати "корисну" мову програмування, яка не є Тюрінгом повною? Я повинен уточнити, що мова йде саме про мови програмування в традиційному розумінні, а не про мови розмітки чи запитів.

8
Коли використовувати DAG (спрямовану ациклічну графіку) в програмуванні?
Нещодавно я знайшов рамку під назвою ecto . У цьому рамках базовий компонент під назвою "плазма" - це ecto Directed Acyclic Graph. В екто плазмою можна керувати планувальник ecto. Мене цікавить, у чому перевага цього механізму, і в яких інших ситуаціях ми можемо використовувати концепцію DAG?

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

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