任何建议?
在您的情况下,我只会将它们命名为“合并”一个。或者,如果您使用一个接口,那可能是
RoleChecker
或
RoleAssumer
。
RoleHelper
(尤其是没有“客户端”会话)。
RoleChecker
另一方面是不好的,
ServerSession
不是动词,也不是接口的方法。
有关会议的帖子很多。
有效的GO:接口名称:
通过惯例,一个方法名称加上-er后缀或类似的修改来构建代理名词:
Session
,
ServerSessioner
,
Session
,
Reader
等。
Writer
Formatter
,CloseNotifier
Read
,
,等等,具有规范的签名和含义。为了避免混乱,除非具有相同的签名和含义,否则不要将您的方法之一提供给这些名称之一。相反,如果您的类型实现与知名类型的方法相同含义的方法,请给出相同的名称和签名;调用您的字符串连接器方法Write
不。
Close
接口类型 @名称中有什么? - 在golang.org上谈话仅指定一种方法的Interfaces通常只是将其函数名称附加到它上。
Flush
有时结果不是正确的英语,但是我们还是这样做:
String
有时我们使用英语来使其变得更好:
String
接口包含多种方法时,请选择一个准确描述其目的的名称(示例:net.conn,http.ResponseWriter,io.readwriter)。对于接收器名称,请勿使用ToString
或
type Reader interface {
Read(p []byte) (n int, err error)
}
或类似的名称。而是: receivers @名称是什么? - 在golang.org
上谈话receivers是一种特殊的论点。我明白了,事实证明我可以使用“ er”惯例。惯例,它们是反映接收器类型的一个或两个字符, 因为它们通常几乎出现在每一行上:
在类型的方法中应保持一致的receiver名称。 (不要在一种方法中使用r,而在另一种方法中使用RDR。)
type Execer interface { Exec(query string, args []Value) (Result, error) }
Go代码评论评论:接收器名称:
方法接收器的名称应反映其身份;通常,其类型的一两个字母缩写就足够了(例如“客户”的“ C”或“ CL”)。不要使用诸如“ me”,“ this”或“ self”之类的通用名称,即面向对象的语言的标识符,这些语言更加强调与函数相反的方法。该名称不必像方法参数那样描述性,因为它的角色显而易见,并且没有纪录目的。它可能非常短,因为它几乎会出现在类型的每种方法的每一行上;熟悉承认简洁。也要保持一致:如果您以一种方法将接收器称为“ C”,请不要在另一个方法中称其为“ Cl”。
type ByteReader interface {
ReadByte() (c byte, err error)
}
谢谢您让我正确地考虑这一点。 golang,按照惯例,一个方法接口名称为 名词表示动作的行动。例如:
this
无论是什么,最好将公约的具体细节清晰。当接口只需要一个功能或非常特定的功能时,这会很好。
self
函数的最低共同点,在这种情况下,
func (b *Buffer) Read(p []byte) (n int, err error) func (sh serverHandler) ServeHTTP(rw ResponseWriter, req *Request) func (r Rectangle) Size() Point
将是一个更好的接口名称,因为该接口定义了两个函数,这些函数必须由代表
/* * Role will ALWAYS reserve the session key "role". */ package goserver const ( ROLE_KEY string = "role" ) type Role string //if index is higher or equal than role, will pass type RolesHierarchy []Role type RoleChecker interface { IsRole(Role, RolesHierarchy) bool } type RoleAssumer interface { AssumeRole(ServerSession, Role) } type RoleCheckerAssumer interface { RoleChecker RoleAssumer } func (r Role) String() string { return string(r) } func NewRole(session ServerSession) Role { return session.GetValue(ROLE_KEY).(Role) } func (this Role) IsRole(role Role, hierarchy RolesHierarchy) bool { if role == this { return true } if len(hierarchy) == 0 { return false } var thisI int = 0 var roleI int = 0 //Duped roles in hierarchy are verified in verifyConfig during parse for i, r := range hierarchy { if this == r { thisI = i } if role == r { roleI = i } } //TODO I can probably condense what follows into one if if thisI == 0 && roleI == 0 { return false } return thisI >= roleI } func (this *Role) AssumeRole(session ServerSession, role Role) { session.SetValue(ROLE_KEY, role) *this = role }
的所有类型都必须满足。 .