Программная инженерия

Q & A для профессионалов, преподавателей и студентов, работающих в жизненном цикле разработки систем

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

5
Что делать, если вы столкнулись с задачей программирования, которую никогда не выполняли?
Я начал свою карьеру в качестве разработчика .NET 3 месяца назад, и после долгого учебного плана по различным технологиям, шаблонам и концепциям разработчики, которые контролировали меня, решили, что я готов присоединиться к одному из многих проектов, которыми занимается компания. Я очень рад, что наконец-то смог начать писать код. Команда, к …

6
Почему вывод типа полезен?
Я читаю код гораздо чаще, чем пишу код, и я предполагаю, что большинство программистов, работающих над промышленным программным обеспечением, делают это. Я предполагаю, что преимущество вывода типов заключается в меньшей детализации и меньшем количестве написанного кода. Но с другой стороны, если вы будете читать код чаще, вам, вероятно, понадобится читаемый …

4
Почему предпочитают нестатические внутренние классы статическим?
Вопрос в том, сделать ли вложенный класс в Java статическим вложенным классом или внутренним вложенным классом. Я искал здесь и на Stack Overflow, но не смог найти никаких вопросов, касающихся последствий этого решения для дизайна. Я нашел вопросы о разнице между статическими и внутренними вложенными классами, что мне ясно. Однако …

4
Самый удобный способ упорядочить определения методов класса?
В любом заданном определении класса я видел определения методов, упорядоченные по-разному: алфавитный, хронологический, основанный на наиболее распространенном использовании, алфавитный, сгруппированный по видимости, алфавитный с геттерами и сеттерами, сгруппированными вместе, и т. Д. Когда я начинаю писать новый класс, Я имею тенденцию просто вводить все, а затем переупорядочивать, когда я закончу …

5
Насколько легко взломать JavaScript (в браузере)?
Мой вопрос касается безопасности JavaScript. Представьте себе систему аутентификации, в которой вы используете среду JavaScript, такую ​​как Backbone или AngularJS , и вам нужны защищенные конечные точки. Это не проблема, поскольку сервер всегда имеет последнее слово и проверит, авторизованы ли вы делать то, что вы хотите. Но что, если вам …

2
Почему PHP не поддерживает перегрузку функций?
Мне интересно, если одной из ключевых особенностей языка программирования является возможность перегрузки функций с помощью аргументов. Я думаю, что это важно в контексте объектно-ориентированного программирования. Это намеренно оставлено позади и не позволено? Или перегрузка не очень хорошая практика?

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 …

3
Разница между REPL и интерактивной оболочкой
Нуб вопрос. Я не совсем могу отличить REPL от интерактивной оболочки, просто прочитав определения в Википедии. Wiki отмечает, что REPL - это особый вид интерактивной языковой оболочки. Это правильное подмножество, хотя? Похоже, что определение Wiki ограничивает терминологию REPL языками, подобными Lisp, тогда как указанные свойства на самом деле не содержат …

8
Когда использовать DAG (направленный ациклический граф) в программировании?
Я недавно нашел структуру под названием Ecto . В этом контексте базовый компонент, называемый «плазмой» , является экто направленным ациклическим графом. В эктоплазме может работать планировщик экто. Мне интересно, в чем преимущество этого механизма, и в каких других ситуациях мы можем использовать концепцию DAG?

11
Подклассы только для конструктора: это анти-шаблон?
У меня была беседа с коллегой, и в итоге у нас возникли противоречивые представления о цели создания подклассов. Моя интуиция заключается в том, что если основная функция подкласса должна выражать ограниченный диапазон возможных значений его родителя, то, вероятно, это не должен быть подкласс. Он высказался за противоположную интуицию: то, что …

4
Почему шаблон внедрения зависимости не был включен в Банду четырех?
Почему шаблон внедрения зависимостей не был включен в группу из четырех человек ? GOF предшествовал широкому распространению автоматизированного тестирования? Считается ли внедрение зависимостей основным шаблоном?

8
Страх выпустить хобби-проект - как побороть? [закрыто]
Я не знаю, связан ли этот вопрос с разработкой программного обеспечения, но все же я попробую: Как и многие программисты, я люблю работать над хобби-проектами. Иногда, казалось бы, хорошие идеи оказываются не очень хорошими, поэтому я выбрасываю проект. Но иногда что-то полезное выходит из проекта. Итак, я мог бы выпустить …

8
Как называется действительно БОЛЬШОЙ коммит исходного кода? [закрыто]
Иногда, когда мы проверяем историю коммитов программного обеспечения, мы можем видеть, что есть несколько коммитов, которые действительно БОЛЬШИЕ - они могут изменить 10 или 20 файлов с сотнями измененных строк исходного кода (дельта). Я помню, что для такого БОЛЬШОГО коммита часто используется термин, но я не могу точно вспомнить, что …

8
Действительно ли возможно иметь «полезный» язык программирования, который не является полным по Тьюрингу?
Там, где принято считать, что язык должен быть полным по Тьюрингу, чтобы быть хорошим, действительно ли возможно иметь «полезный» язык программирования, который не является полным по Тьюрингу? Я должен пояснить, что речь идет о языках «программирования» в традиционном смысле, а не о языках разметки или запросов.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.