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

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

7
Якщо функції повинні зробити нульові перевірки перед тим, як виконати задумане поведінку, це погана конструкція?
Тому я не знаю, чи це добре, чи погано дизайн коду, тому я подумав, що краще запитати. Я часто створюю методи, що займаються обробкою даних за участю класів, і я часто роблю багато перевірок у методах, щоб переконатися, що я не отримую нульових посилань або інших помилок перед рукою. Для …
67 c#  design  validation 

10
Що таке правильне використання каналу?
Даудаустинг означає передачу з базового класу (або інтерфейсу) на підклас або клас класу. Прикладом пониження може бути, якщо ви переходите System.Objectна інший тип. Downcasting непопулярний, можливо, кодовий запах. Об'єктно-орієнтована доктрина - це віддати перевагу, наприклад, визначенню та виклику віртуальних чи абстрактних методів замість того, щоб придушувати. Які, якщо такі є, …

16
Скільки свободи повинен мати програміст у виборі мови та рамки?
Я почав працювати в компанії, орієнтованій насамперед на C #. У нас є кілька людей, яким подобається Java і JRuby, але більшість програмістів тут люблять C #. Мене взяли на роботу, тому що я маю великий досвід створення веб-додатків і тому, що я схиляюся до новіших технологій, таких як JRuby …

12
Чи порушує конструктор, який підтверджує свої аргументи, SRP?
Я намагаюся максимально дотримуватися Принципу єдиної відповідальності (СРП) і звик до певної моделі (для СРП щодо методів), сильно покладаючись на делегатів. Мені хотілося б знати, чи є такий підхід обгрунтованим чи є якісь серйозні проблеми з ним. Наприклад, щоб перевірити вхід до конструктора, я міг би ввести наступний метод ( …

12
Маючи прапор, щоб вказати, чи варто нам кидати помилки
Нещодавно я почав працювати в місці з деякими значно старшими розробниками (близько 50+ років). Вони працювали над критичними програмами, що стосуються авіації, де система не могла знизитися. Як результат, старший програміст прагне кодувати таким чином. Він схильний вводити бульові елементи в об’єкти, щоб вказати, чи слід викинути виняток чи ні. …

11
Як я можу переконати мого шефа, що ANSI C є неадекватним для нашого нового проекту? [зачинено]
Кілька місяців тому ми почали розробляти додаток для управління внутрішньо розробленим тестовим обладнанням і записувати набір вимірювань. Він повинен мати простий інтерфейс користувача і, ймовірно, потребуватиме потоки через безперервну запис, який має відбуватися. Цей додаток буде використовуватися протягом декількох років, і його повинен підтримувати декілька студентів з інформатики протягом цього …

5
Яка різниця між реалізацією інтерфейсу явно чи неявно?
У Visual Studio я можу клацнути правою кнопкою миші інтерфейс і вибрати Інтерфейс реалізації або Явно реалізувати інтерфейс. public class Test : ITest { public string Id // Generated by Implement Interface { get { throw new NotImplementedException(); } } string ITest.Id // Generated by Implement Interface Explicitly { get …
64 c#  syntax 

11
Чи великий виразний вираз виразніше, ніж той самий вираз, розбитий на предикативні методи? [зачинено]
Що простіше зрозуміти, великий булевий вислів (досить складний) або той самий вислів, розбитий на методи предикатів (багато зайвого коду для читання)? Варіант 1, великий булевий вираз: private static bool ContextMatchesProp(CurrentSearchContext context, TValToMatch propVal) { return propVal.PropertyId == context.Definition.Id && !repo.ParentId.HasValue || repo.ParentId == propVal.ParentId && ((propVal.SecondaryFilter.HasValue && context.SecondaryFilter.HasValue && propVal.SecondaryFilter.Value …
63 c#  readability 

11
Чи порушує цей дизайн класу принцип єдиної відповідальності?
Сьогодні я мав сварку з кимось. Я пояснював переваги створення багатої доменної моделі на відміну від анемічної доменної моделі. І я продемонстрував свою думку простим класом, який виглядає так: public class Employee { public Employee(string firstName, string lastName) { FirstName = firstName; LastName = lastname; } public string FirstName { …


6
Чому C # був створений за допомогою "нових" та "віртуальних + переопрацьованих" ключових слів на відміну від Java?
У Java є немає virtual, new, overrideключові слова для визначення методу. Тож роботу методу легко зрозуміти. Причина, якщо DerivedClass розширює BaseClass і має метод з тим самим ім'ям і такою ж підписом BaseClass, то переосмислення відбуватиметься при поліморфізмі під час виконання (за умови, що методу немає static). BaseClass bcdc = …

17
Навіщо використовувати підхід OO замість гігантського оператора “switch”?
Я працюю в магазині .Net, C # і в мене є колега, який наполягає на тому, що ми повинні використовувати гігантські заяви Switch в нашому коді з великою кількістю "випадків", а не більше об'єктно-орієнтованих підходів. Його аргумент послідовно сходить до того, що оператор Switch збирається в "таблицю стрибків процесора" і …

7
Як ви кодуєте алгебраїчні типи даних мовою C # - або Java?
Існують деякі проблеми, які легко вирішуються алгебраїчними типами даних, наприклад, тип списку може бути дуже коротко виражений як: data ConsList a = Empty | ConsCell a (ConsList a) consmap f Empty = Empty consmap f (ConsCell a b) = ConsCell (f a) (consmap f b) l = ConsCell 1 (ConsCell …

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)); Результатом мого …

6
Чи слід створити новий єдиний екземпляр HttpClient для всіх запитів?
нещодавно я натрапив на це повідомлення в блозі від монстрів asp.net, який розповідає про проблеми з використанням HttpClientнаступним чином: using(var client = new HttpClient()) { } Відповідно до повідомлення в блозі, якщо ми розпоряджаємось HttpClientпісля кожного запиту, він може тримати з'єднання TCP відкритими. Це потенційно може призвести до System.Net.Sockets.SocketException. Правильний …
57 c#  http-request 

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