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

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

9
Удобочитаемость в сравнении с ремонтопригодностью, особый случай написания вызовов вложенных функций
Мой стиль кодирования для вызовов вложенных функций следующий: var result_h1 = H1(b1); var result_h2 = H2(b2); var result_g1 = G1(result_h1, result_h2); var result_g2 = G2(c1); var a = F(result_g1, result_g2); Недавно я перешел в отдел, где очень популярен следующий стиль кодирования: var a = F(G1(H1(b1), H2(b2)), G2(c1)); Результатом моего способа …

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

6
Когда использовать слабые ссылки в .Net?
Я лично не сталкивался с ситуацией, когда мне нужно было использовать тип WeakReference в .Net, но распространенное мнение, похоже, заключается в том, что его следует использовать в кэш-памяти. Доктор Джон Харроп привел очень хороший аргумент против использования WeakReferences в кешах в своем ответе на этот вопрос. Я также часто слышал, …

8
Почему статический метод main в Java и C #, а не конструктор?
Я ищу точный ответ из первичного или вторичного источника, почему (в частности) Java и C # решили использовать статический метод в качестве своей точки входа, а не представлять экземпляр приложения экземпляром Applicationкласса (с точкой входа быть подходящим конструктором). Предпосылки и детали моего предыдущего исследования Об этом уже спрашивали. К сожалению, …
54 java  c#  history  entry-point 

2
Почему void не разрешен как универсальный тип в C #
Каковы были дизайнерские решения, которые приводили доводы в пользу того, что они voidне конструируемы и не допускаются в качестве универсального типа? В конце концов, это просто специальная пустая ячейка, structкоторая позволила бы избежать общего PITA, состоящего из отдельных участников Funcи Actionделегатов. (C ++ допускает явные voidвозвраты и допускает voidв качестве …

11
Я не понимаю, как TDD помогает мне получить хороший дизайн, если мне нужен дизайн, чтобы начать его тестировать
Я пытаюсь обернуть голову вокруг TDD, особенно в части разработки. Я посмотрел некоторые книги, но те, которые я нашел, в основном касаются части тестирования - История NUnit, почему тестирование хорошо, Red / Green / Refactor и как создать String Calculator. Хорошие вещи, но это "просто" модульное тестирование, а не TDD. …
50 java  c#  .net  tdd 

7
Управление и организация массово увеличенного количества классов после перехода на SOLID?
За последние несколько лет мы постепенно переходили на все более и более качественно написанный код, по несколько шагов за раз. Мы наконец начинаем переключаться на что-то, что, по крайней мере, напоминает SOLID, но мы еще не совсем там. После внесения изменений одна из самых больших претензий разработчиков заключается в том, …

11
Почему /// блоки комментариев важны?
Кто-то однажды сказал, что мы должны поставить перед всеми нашими методами /// <summary>блоки комментариев (C #), но не объяснил, почему. Я начал их использовать и обнаружил, что они меня немного раздражают, поэтому перестал их использовать, за исключением библиотек и статических методов. Они громоздкие, и я всегда забываю обновить их. Есть …
49 c#  comments 

3
Что является лучшей практикой - вспомогательные методы как экземпляры или статические?
Этот вопрос субъективен, но мне было просто любопытно, как к этому подходит большинство программистов. Пример ниже приведен на псевдо-C #, но это также должно относиться к Java, C ++ и другим языкам ООП. В любом случае, когда я пишу вспомогательные методы в моих классах, я склонен объявлять их как статические …

9
Почему цикл while (true) в конструкторе действительно плох?
Хотя это и общий вопрос, моя сфера - скорее C #, так как я знаю, что языки, подобные C ++, имеют различную семантику в отношении выполнения конструктора, управления памятью, неопределенного поведения и т. Д. Кто-то задал мне интересный вопрос, на который мне было нелегко ответить. Почему (или это вообще?) Считается …
47 c#  architecture 

12
Избегать "goto" вуду?
У меня есть switchструктура, которая должна обрабатывать несколько случаев. switchРаботает над enumкоторой ставит вопрос о дублировании кода через объединенные значения: // All possible combinations of One - Eight. public enum ExampleEnum { One, Two, TwoOne, Three, ThreeOne, ThreeTwo, ThreeOneTwo, Four, FourOne, FourTwo, FourThree, FourOneTwo, FourOneThree, FourTwoThree, FourOneTwoThree // ETC. } …

3
Почему C # допускает свойства в интерфейсах?
В C # следующий код действителен interface I{ int property{get;set;} } Что не имеет никакого смысла для меня. Это, кажется, нарушает один из самых важных принципов интерфейсов: отсутствие состояния (другими словами, нет полей). Разве свойство не создает неявное приватное поле? Разве это не очень плохо для интерфейсов?

1
Почему мир .Net, кажется, заключает в себе магические строки вместо статически типизированных альтернатив?
Итак, я работаю в .Net. Я делаю проекты с открытым исходным кодом в .Net. Одна из моих самых больших проблем с этим связана не с .Net, а с сообществом и структурами вокруг него. Повсюду кажется, что магические схемы именования и строки рассматриваются как лучший способ сделать все. Смелое утверждение, но …

3
Что такое инжектор конструктора?
Я смотрел на внедрение терминов и внедрение зависимостей, просматривая статьи по шаблонам проектирования (локатор служб). Когда я гуглил о внедрении конструктора, я получил неясные результаты, что побудило меня проверить здесь. Что такое инжектор конструктора? Это особый тип внедрения зависимости? Канонический пример был бы очень полезен! редактировать Пересматривая эти вопросы после …

4
Почему и когда я должен сделать класс «статическим»? Каково назначение ключевого слова static на классах?
staticКлючевое слово в качестве члена во многих языках означает , что вы не должны создать экземпляр этого класса , чтобы иметь возможность иметь доступ к этому члену. Тем не менее, я не вижу никакого оправдания, чтобы сделать весь класс static. Почему и когда я должен сделать урок static? Какие преимущества …

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