Разделить класс доступа к данным на читателя и писателя или объединить их?

Это может быть на стороне "discussy", но я действительно хотел бы услышать Ваше мнение об этом.

Ранее я часто писал классы доступа к данным, которые обрабатывали как чтение, так и запись, что часто приводило к плохому именованию, например FooIoHandler и т. д. Эмпирическое правило, что классы, которые трудно назвать, вероятно, плохо разработаны, предполагает, что это не очень хорошее решение.

Итак, я недавно начал разделять доступ к данным на FooWriter и FooReader, что приводит к более приятным именам и дает некоторую дополнительную гибкость, но в то же время мне нравится держать его вместе, если классы не большие.

Является ли разделение читателя / писателя лучшим дизайном, или я должен их объединить? Если я должен объединить их, Какого черта я должен назвать класс?

Спасибо /Erik

architecture   oop   data-access    

422   5   18:38, 4th August, 2020


В каком текстовом редакторе самые гибкие макросы?

В каком текстовом редакторе самые гибкие макросы?

Макросы    

383   4   18:27, 4th August, 2020


Как сделать вставки в таблицу?

У меня есть представление, в котором есть список заданий с данными, такими как то, кому они назначены, и этап, на котором они находятся. Мне нужно написать хранимую процедуру, которая возвращает количество заданий, которые каждый человек имеет на каждом этапе.

До сих пор у меня есть это (упрощенный):

DECLARE @ResultTable table 
(
  StaffName nvarchar(100),
  Stage1Count int,
  Stage2Count int
)

INSERT INTO @ResultTable (StaffName, Stage1Count)
  SELECT StaffName, COUNT(*) FROM ViewJob
  WHERE InStage1 = 1
  GROUP BY StaffName

INSERT INTO @ResultTable (StaffName, Stage2Count)
  SELECT StaffName, COUNT(*) FROM ViewJob
  WHERE InStage2 = 1
  GROUP BY StaffName

Проблема в том, что строки не объединяются. Поэтому, если у сотрудника есть задания в stage1 и stage2, есть две строки в @ResultTable., что я действительно хотел бы сделать, это обновить строку, если она существует для сотрудника, и вставить новую строку, если она не существует.

Кто-нибудь знает, как это сделать, или может предложить другой подход? Я бы очень хотел избежать использования курсоров для итерации по списку пользователей (но это мой запасной вариант).

Я использую SQL Server 2005.

Edit: @Lee: к сожалению, InStage1 = 1 было упрощением. Это действительно больше похоже на то, где DateStarted-это не NULL, а DateFinished - это NULL.

Edit: @BCS: мне нравится идея сделать вставку всех сотрудников сначала, поэтому мне просто нужно делать обновление каждый раз. Но я изо всех сил пытаюсь получить эти утверждения UPDATE правильно.

sql   sql-server   tsql    

417   6   17:43, 4th August, 2020


Стоит ли мне беспокоиться о том, что мой код .NET будет запутан?

Я уверен, что многие читатели на SO использовали отражатель .NET Лутца Редера для декомпиляции своего кода .NET. Я был поражен тем, насколько точно наш исходный код может быть восстановлен из наших скомпилированных сборок.

Мне было бы интересно узнать, сколько из вас используют обфускацию и для каких продуктов?

Я уверен, что это гораздо более важный вопрос для, скажем, приложения .NET, которое вы предлагаете для загрузки через интернет, в отличие от того, что построено специально для конкретного клиента.

.net   obfuscation    

492   10   17:35, 4th August, 2020


Как включить мультисэмплинг для программы wxWidgets OpenGL?

Мультисэмплинг -это способ применения полноэкранного сглаживания (FSAA) в приложениях 3D. Мне нужно использовать мультисэмплинг в моей программе OpenGL, которая в настоящее время встроена в wxWidgets GUI. Есть ли способ сделать это? Пожалуйста, отвечайте только в том случае, если вы знаете подробные шаги для достижения этой цели.

Я знаю о включении мультисэмплинга с использованием WGL (Win32 extensions to OpenGL). Однако, поскольку моя программа OpenGL не написана в MFC (и я хочу, чтобы код был переносимым на несколько платформ), это не вариант для меня.

opengl   wxwidgets   multisampling    

603   1   17:30, 4th August, 2020


Debian разрешить юзеру исользовать 80 порт

Подскажите каким образом в Debian (testing) разрешить пользователю(не root) использовать 80ый порт?
Хочу запустить web-server thin на 80ом порту с правами обычного пользователя.

Ruby   Debian    

375   1   17:26, 4th August, 2020


Требования, спецификации и управление в среде Agile

Моя компания пыталась принять методологию scrum со смешанным успехом. Тезисы-это некоторые области, где у нас были проблемы. Как вы справляетесь с этим?

  1. Отслеживание требований от Маркетинг продукта через к продукту. Мы пробуем JIRA отслеживать все требования по отдельности и назначать выпуск каждому из них по мере его выбора для реализации.
  2. Кто создает истории? Товар Менеджмент, который не знает достаточно для эффективного создания небольших историй, разработчики, у которых может не быть домена знание, аналитик между ними?
  3. Функциональные характеристики
    1. вы пишете их или просто пытаетесь ввести в историю определение?
    2. Вы пишете функционально спецификации на историю? За функцию?
    3. Как вы видите взаимосвязь между функциональными характеристиками и историями?
  4. отвечая на вопрос от людей с VP в их названии "what are we going to get by [8 months from now]?"

agile   scrum   product-management    

409   5   17:06, 4th August, 2020


Создал пост +50 голосов, а как получить инвайт?

Ребята подскажите, вот я сделал пост:
habrahabr.ru/blogs/php/107261/
как бы мне инвайт получить?

Хабр    

324   5   16:49, 4th August, 2020


Kaк поменять местами Fn и Ctrl на Thinkpad SL510?

Как поменять местами кнопки из сабжа?

Поиск в интернете показывает, что такая возможность существует, это написано в официальных блогах lenovoblogs.com для всех моделей, начиная с 2010 года, через настройку в BIOS, но в обновлённом до последней версии биосе я не нашёл такого. Что я упускаю?

Конкретная модель ноутбука — ThinkPad SL 510 2847-RF1, если это важно.

Lenovo    

515   2   16:36, 4th August, 2020


Разница между массивом байтов и потоком памяти

Я читаю двоичный файл в программу синтаксического анализа. Мне нужно будет перебирать файл и искать определенные маркеры, чтобы я мог разделить файл и передать эти части в конструкторы соответствующих объектов.

Есть ли преимущество в сохранении файла в виде потока, будь то MemoryStream или FileStream, или он должен быть преобразован в массив byte[]?

Кит

performance   comparison    

456   2   16:24, 4th August, 2020