Вопросы с тегом «c#»

C # - это многопарадигмальный управляемый объектно-ориентированный язык программирования со сборкой мусора, созданный Microsoft параллельно с платформой .NET.

5
за против foreach против LINQ
Когда я пишу код в Visual Studio, ReSharper (да благословит его Бог!) Часто предлагает мне сменить цикл старой школы for на более компактную форму foreach. И часто, когда я принимаю это изменение, ReSharper делает шаг вперед и предлагает мне изменить его снова, в блестящей форме LINQ. Итак, мне интересно: есть …
86 c#  linq 

11
Является ли статика универсальным «злом» для модульного тестирования, и если да, то почему Resharper рекомендует его? [закрыто]
Я обнаружил, что существует только 3 способа статических зависимостей модульного тестирования (макет / заглушка) в C # .NET: Кроты TypeMock JustMock Учитывая, что два из них не бесплатны, а один не выпущен в версии 1.0, издеваться над статичными вещами не так уж и легко. Имеет ли это статические методы и …

4
Богатые доменные модели - как именно вписывается поведение?
В дебатах моделей предметной области Rich против Anemic Интернет полон философских советов, но не хватает авторитетных примеров. Цель этого вопроса - найти четкие рекомендации и конкретные примеры правильных моделей проектирования на основе доменов. (В идеале в C #.) Для реального примера эта реализация DDD кажется неправильной: Приведенные ниже модели доменов …

8
Вернуть магическое значение, выбросить исключение или вернуть ложь при неудаче?
Иногда мне приходится писать метод или свойство для библиотеки классов, для которой нет ничего исключительного в том, что у меня нет реального ответа, но есть ошибка. Что-то не может быть определено, недоступно, не найдено, в настоящее время невозможно или больше нет доступных данных. Я думаю, что есть три возможных решения …

11
Разработчики Java сознательно отказались от RAII?
Как давний программист на C #, я недавно узнал больше о преимуществах Resource Acquisition Is Initialization (RAII). В частности, я обнаружил, что идиома C #: using (var dbConn = new DbConnection(connStr)) { // do stuff with dbConn } имеет эквивалент C ++: { DbConnection dbConn(connStr); // do stuff with dbConn …
82 java  c#  c++  language-design 

10
Исключения, коды ошибок и дискриминационные союзы
Я недавно начал работу по программированию на C #, но у меня есть немного опыта в Haskell. Но я понимаю, что C # является объектно-ориентированным языком, я не хочу вбивать круглый колышек в квадратное отверстие. Я прочитал статью « Исключение исключений» от Microsoft, в которой говорится: НЕ возвращайте коды ошибок. …
80 c#  exceptions 

6
Когда свободно говорить на C #?
Во многих отношениях мне действительно нравится идея интерфейсов Fluent, но со всеми современными функциями C # (инициализаторы, лямбды, именованные параметры) я думаю, «стоит ли это того?» И «Правильный ли это шаблон для использовать?». Может ли кто-нибудь дать мне, если не принятую практику, хотя бы свой собственный опыт или матрицу решений …
78 c#  .net 

17
Руководство по кодированию: методы не должны содержать более 7 операторов?
Я просматривал Рекомендации по кодированию AvSol для C #, и я согласен почти со всем, но мне действительно интересно посмотреть, что другие думают об одном конкретном правиле. AV1500 Методы не должны превышать 7 операторов. Метод, который требует более 7 операторов, выполняет слишком много или имеет слишком много обязанностей. Это также …

11
Это плохая практика, чтобы модифицировать код строго для целей тестирования
У меня есть спор с коллегой-программистом о том, является ли хорошей или плохой практикой модифицировать рабочий фрагмент кода только для того, чтобы сделать его тестируемым (например, с помощью модульных тестов). Мое мнение таково, что все в порядке, конечно, в рамках поддержания хороших объектно-ориентированных и программных практик (не «все обнародовать» и …

8
Практическое использование ключевого слова yield в C # [закрыто]
После почти 4 лет опыта я не видел кода, в котором используется ключевое слово yield . Может ли кто-нибудь показать мне практическое использование (наряду с объяснением) этого ключевого слова, и если да, то нет ли других способов, чтобы легче было выполнить то, что оно может сделать?
76 c#  syntax 

9
Зачем использовать частичные классы?
В моем понимании partialключевое слово делает только то, что позволяет разделить класс между несколькими исходными файлами. Есть ли причина для этого, кроме как для организации кода? Я видел, как это используется в сгенерированных классах пользовательского интерфейса. Кажется, плохая причина для создания целого ключевого слова. Если класс достаточно большой, чтобы требовать …

5
Почему бы вам не использовать директиву using в C #?
Существующие стандарты кодирования в большом проекте C # включают правило, согласно которому все имена типов должны быть полностью квалифицированными, что запрещает использование директивы using. Итак, а не знакомые using System.Collections.Generic; .... other stuff .... List<string> myList = new List<string>(); (Это, вероятно, не удивительно, что varтакже запрещено.) Я заканчиваю с: System.Collections.Generic.List<string> …

7
Когда использовать абстрактные классы вместо интерфейсов с методами расширения в C #?
«Абстрактный класс» и «интерфейс» являются похожими понятиями, причем интерфейс является более абстрактным из двух. Одним из отличительных факторов является то, что абстрактные классы предоставляют реализации методов для производных классов, когда это необходимо. Однако в C # этот дифференцирующий фактор был уменьшен недавним введением методов расширения, которые позволяют предоставлять реализации для …

3
Должны ли мы включить папку Nuget PACKAGE в систему контроля версий?
я бы хотел знать В проекте C # или VB.NET мы должны включить папку PACKAGE (папку пакета nugget, которая создается в корне моего проекта, содержащего файлы nupkg и другое содержимое) в наш репозиторий контроля версий (например, Git).

8
Проблемы с именами: следует ли переименовать «ISomething» в «Something»? [закрыто]
В главе «Дядя Боб» об именах в « Чистом коде» рекомендуется избегать кодировок в именах, главным образом в отношении венгерских обозначений. Он также особо упоминает удаление Iпрефикса из интерфейсов, но не показывает примеров этого. Давайте предположим следующее: Использование интерфейса в основном для достижения тестируемости через внедрение зависимостей Во многих случаях …

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