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

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

5
Почему Python не допускает многострочные лямбды?
Может кто-нибудь объяснить конкретные причины, по которым BDFL решили сделать лямбды Python однострочными? Это хорошо: lambda x: x**x Это приводит к ошибке: lambda x: x**x Я понимаю, что создание многострочного лямбда-выражения каким-то образом «нарушит» нормальные правила отступов и потребует добавления дополнительных исключений, но разве это не стоит преимуществ? Посмотрите на …
50 lambda  python 

2
Должен ли я всегда использовать «is» в качестве префикса для логических переменных? [закрыто]
Должен ли я всегда использовать в isкачестве префикса для логических переменных? Как насчет логических значений, которые указывают что-то в прошлом? Должен ли я написать isInitializedили wasInitialized? Должен ли я написать для свойств IsManyMembersили HasManyMembers? Есть ли лучшие практики? Или я должен просто написать в соответствии с английскими правилами?

8
Должна ли сгенерированная документация храниться в репозитории Git?
Когда вы используете такие инструменты, как jsdocs , он генерирует статические HTML-файлы и их стили в вашей кодовой базе на основе комментариев в вашем коде. Должны ли эти файлы быть добавлены в репозиторий Git или их следует игнорировать с помощью .gitignore?

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

4
Почему плохая идея создать универсальный сеттер и геттер с отражением?
Некоторое время назад я написал этот ответ на вопрос о том, как избежать использования методов получения и установки для каждой изменяемой переменной. В то время у меня было только трудно понять, что это плохая идея, но ОП явно спрашивал, как это сделать. Я искал здесь, почему это может быть проблемой, …
49 java  reflection 

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
«Легко рассуждать» - что это значит? [закрыто]
Я много раз слышал, как другие разработчики используют эту фразу, чтобы «рекламировать» некоторые шаблоны или разрабатывать лучшие практики. Большую часть времени эта фраза используется, когда вы говорите о преимуществах функционального программирования. Фраза «Легко рассуждать» использовалась как есть, без каких-либо объяснений или примеров кода. Так что для меня это похоже на …

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); } Это выглядит вполне нормально, но я …

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

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, …

1
Почему в Go есть «новое»?
Я все еще озадачен тем, почему у нас newв Go. Когда вы хотите создать экземпляр структуры, вы делаете t := Thing{} и вы можете получить указатель на новый экземпляр, выполнив t := &amp;Thing{} Но есть и такая возможность: t := new(Thing) Этот последний кажется немного чуждым для остальной части языка. …
49 go 

6
Обходной путь для проверенных исключений Java
Я высоко ценю новые функции Java 8, касающиеся лямбд и интерфейсов методов по умолчанию. Тем не менее, я все еще скучаю с проверенными исключениями. Например, если я просто хочу перечислить все видимые поля объекта, я хотел бы просто написать это: Arrays.asList(p.getClass().getFields()).forEach( f -&gt; System.out.println(f.get(p)) ); Тем не менее, поскольку getметод …

3
Какой смысл в шаблоне PImpl, хотя мы можем использовать интерфейс для той же цели в C ++?
Я вижу много исходного кода, который использует идиому PImpl в C ++. Я предполагаю, что его цель - скрыть личные данные / тип / реализацию, чтобы убрать зависимость, а затем уменьшить время компиляции и проблему включения заголовка. Но интерфейсные / чисто абстрактные классы в C ++ также имеют эту возможность, …

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