Этот вопрос, возможно, будет закрыт, потому что он считается основанным на мнении, или не связан с кодом, или как угодно ...
Тем не менее, Голанг считается довольно самоуверенным, и, поскольку я считаю стандарты очень важными, я буду придерживаться своего взгляда на неписаное правило и того, как я примирю, по сути, почему ReadCloser
хорошо, но некоторые другие er
интерфейсы могут не быть.
Я бы интерпретировал ReadCloser
, чтобы не нарушать «правило» (я бы назвал это соглашением более похожим). У меня есть ряд аргументов, почему я бы сказал, что это не нарушает соглашение:
Интерфейс ReadCloser
не является автономным интерфейсом. Это сложный интерфейс. Это имя отражает это. Он объединяет Read
и Close
(две функции в интерфейсе, который вам нужен) и добавляет суффикс er
. То, как реализованы обе функции и откуда они берутся, не имеет отношения к интерфейсу. Если вы что-то прочитали, скорее всего, вам тоже придется закрыть ресурс. Имеет смысл только объединить два интерфейса, поэтому вы можете использовать тип, который гарантирует доступность функций Reader
и Closer
.
Так же, как и заикания руководств WRT с именами , следует избегать. Особенно, если это не добавляет никакой ценности. Технически можно утверждать, что интерфейс должен называться ReaderCloser
, но означает ли это имя что-либо, что не передается именем ReadCloser
? Конечно, нет. Последний не повторяет суффикс и читается легче.
[Тысяча сто двадцать семь] 3. Интерфейсы er
и CamelCasing
Примеры однофункциональных интерфейсов er
, таких как Stringer
или Publisher
, действительно вырезаны & amp; сухой. A Stringer
содержит функцию String
. Конец истории. То же, что и интерфейс Publisher
.
Вы заметите, что интерфейс ReadCloser
является CamelCased, что предполагает, что это композитный тип. Просто разделите имя на символы UpperCase и добавьте суффикс к каждой части. Если части являются добросовестными er
интерфейсами, и составной интерфейс имеет смысл (см. Пункт 1: если вы читаете, скорее всего, вам придется закрыть), то это допустимый составной интерфейс.
Примеры недопустимого интерфейса er
:
type FileReader interface {
ReadCloserer
ScanDir(string) ([]string, error)
IsFile(string) bool
Open(string, string) error
// and so on
}
Этот интерфейс содержит слишком много функций BS для упаковки в интерфейс FileReader
.
SQL Выдерживает сравнение, довольно хорошо. Я также использовал SQL Delta, которая предоставила лучшие сценарии дельты. Также, если Вы - пользователь Visual Studio, Выпуск Системной базы данных Команды Visual Studio не является плохим способом пойти (включает задачи MSBuild автоматизировать Ваши сборки DB и управление версиями). И VSTS, DB (иначе чувак данных) также свободен теперь, если Вам лицензируют для выпуска Разработчика VSTS.
SQL Выдерживает сравнение Redgate, лучший инструмент, который я использовал для дб, выдерживают сравнение.
Я работаю на Innovartis, и мы делаем Фантом DB, который является чем-то, на что можно хотеть посмотреть. Это может сделать то, что Вы хотите - сравнивают сценарии с базой данных. Это может сделать это в одноэтапном использовании менеджера изменений путем создания и сравнения. Это очень, очень быстро. Создание базы данных также приносит Вам дополнительную пользу проверки зависимости базы данных на всякий случай, кто-то повредил одну часть кода базы данных путем изменения или представления другого. Мы полагаем, что программное обеспечение предлагает способ управлять изменениями базы данных быстро и экономически эффективно и объединенный с Вашим управлением исходным кодом может дать Вам полный контроль. Как система команды, но очень, намного более дешевый.
Сценарий, Сборка, Сравнивает, Обновление, Создает сценарий изменения, Развертывается, и функция базы данных Copy, которая является бесплатной. www.dbghost.com
Я использовал инструмент AdeptSQL много лет и был очень впечатлен. У них есть очень хорошая поддержка также, и в прошлый раз, когда я смотрел, они были по умеренной цене.
Хороший выдерживают сравнение, инструмент является внутренней ЖАБОЙ для SQL-сервера. Это было автономное бесплатное приложение, но теперь это - только часть полного пакета. Но можно попробовать бета-версию. Можно сделать снимок структуры и каждый раз, когда сравнивают живой сервер со снимком.
Мне действительно нравятся инструменты Apex SQL - это всегда - определенная жеребьевка, предпочитаю ли я Красный Логический элемент или инструмент Apex для того же задания :-)
Мы можем порекомендовать вам надежный инструмент сравнения SQL , который предлагает в 3 раза более быстрое сравнение и синхронизацию табличных данных в ваших базах данных SQL Server. Это dbForge Data Compare for SQL Server .
Основные преимущества:
Плюс бесплатная 30-дневная пробная версия и безопасная покупка с 30-дневной гарантией возврата денег.