Запитання з тегом «c#»

C # - це багатопарадигмна керована об'єктно-орієнтована мова програмування, що збирається сміттям, створена Microsoft паралельно з платформою .NET

5
за vs. foreach і LINQ
Коли я пишу код у Visual Studio, ReSharper (дай Бог це!) Часто пропонує мені змінити свою стару школу для циклу на більш компактну форму foreach. І часто, коли я приймаю цю зміну, ReSharper робить крок вперед і пропонує мені змінити її знову, у блискучій формі LINQ. Отже, мені цікаво: чи …
86 c#  linq 

11
Чи є статична загально "зла" для тестування одиниць і якщо так, то чому рекомендує Решарпер? [зачинено]
Я виявив, що у C # .NET є лише 3 способи розділити тестові (макет / заглушки) залежності, які є статичними в C # .NET: Молі TypeMock JustMock Зважаючи на те, що два з них не безкоштовні, а один не потрапив до версії 1.0, глузувати з статичних матеріалів не надто просто. …

4
Моделі багатого домену - як, зокрема, підходить поведінка?
У дискусіях про доменні моделі Річ проти Анемій Інтернет є сповненим філософських порад, але коротким на авторитетні приклади. Мета цього питання - знайти остаточні вказівки та конкретні приклади правильних моделей, керованих доменом. (Ідеально в C #.) На прикладі реального світу ця реалізація DDD здається помилковою: Наведені нижче моделі доменів WorkItem …

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

11
Чи свідомі розробники Java відмовилися від RAII?
Як давній програміст C #, нещодавно я прийшов дізнатися більше про переваги придбання ресурсів - це ініціалізація (RAII). Зокрема, я виявив, що ідіома C #: using (var dbConn = new DbConnection(connStr)) { // do stuff with dbConn } має еквівалент С ++: { 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
Практичне використання ключового слова "урожайність" у C # [закрито]
Після майже 4-річного досвіду я не бачив коду, де використовується ключове слово дохід . Чи може хтось показати мені практичне використання цього ключового слова (разом з поясненнями), і якщо так, чи не існують інші способи, які простіше виконати?
76 c#  syntax 

9
Навіщо використовувати часткові класи?
Наскільки я розумію, partialключове слово не робить нічого, крім того, що дозволяє розділити клас на кілька вихідних файлів. Чи є якась причина для цього, крім організації коду? Я бачив, що він використовувався для цього в створених класах інтерфейсу. Це здається поганою причиною створення цілого ключового слова. Якщо клас досить великий, …

5
Чому б ви не використовували директиву "використання" в C #?
Існуючі стандарти кодування у великому проекті C # містять правило про те, що всі назви типів мають повну кваліфікацію, забороняючи використовувати директиву "використання". Отже, а не знайоме: using System.Collections.Generic; .... other stuff .... List<string> myList = new List<string>(); (Мабуть, не дивно, що varтакож заборонено.) Я закінчую: System.Collections.Generic.List<string> myList = new …

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

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

8
Визначення питань: Чи слід "ISomething" перейменувати на "Щось"? [зачинено]
Глава дядька Боба про імена в Чистому кодексі рекомендує уникати кодування імен, головним чином щодо угорських позначень. Він також конкретно згадує про видалення Iпрефікса з інтерфейсів, але не показує прикладів цього. Припустимо наступне: Використання інтерфейсу полягає в основному для досягнення простежуваності шляхом введення залежності У багатьох випадках це призводить до …

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