Правило для имени интерфейса GoLang и его количества методов [закрыто]

Решение:

Использовать шаблонный модификатор sU получит желаемое соответствие в PHP.

example:

preg_match('/(.*)/sU',$content,$match);

Источник:

http://dreamluverz.com/developers-tools/regex-match-all-including-newline http://php.net/manual/en/reference.pcre .pattern.modifiers.php

-3
задан jubobs 16 January 2019 в 13:35
поделиться

1 ответ

Этот вопрос, возможно, будет закрыт, потому что он считается основанным на мнении, или не связан с кодом, или как угодно ...

Тем не менее, Голанг считается довольно самоуверенным, и, поскольку я считаю стандарты очень важными, я буду придерживаться своего взгляда на неписаное правило и того, как я примирю, по сути, почему ReadCloser хорошо, но некоторые другие er интерфейсы могут не быть.


Я бы интерпретировал ReadCloser, чтобы не нарушать «правило» (я бы назвал это соглашением более похожим). У меня есть ряд аргументов, почему я бы сказал, что это не нарушает соглашение:

1. Это не автономный интерфейс

Интерфейс ReadCloser не является автономным интерфейсом. Это сложный интерфейс. Это имя отражает это. Он объединяет Read и Close (две функции в интерфейсе, который вам нужен) и добавляет суффикс er. То, как реализованы обе функции и откуда они берутся, не имеет отношения к интерфейсу. Если вы что-то прочитали, скорее всего, вам тоже придется закрыть ресурс. Имеет смысл только объединить два интерфейса, поэтому вы можете использовать тип, который гарантирует доступность функций Reader и Closer.

2. Имена не должны заикаться

Так же, как и заикания руководств 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.

0
ответ дан Elias Van Ootegem 16 January 2019 в 13:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: