Interface Namenskonvention Golang

Ich werde nur meinen Code posten:

/*
*  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

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
}

Es sollte beachtet werden, dass ServerSession auch eine Schnittstelle ist. Der Aufruf von "ServerSessioner" fühlt sich für mich nur wackelig an.

Ich spiele mit der Idee, eine Schnittstelle mit IsRole () und AssumeRole () zu erstellen, aber "Roler" scheint sehr blöd zu sein. Es dämmert mir, dass ich nicht wirklich weiß oder jemals auf Namenskonventionen für Schnittstellen gestoßen bin, außer auf das Standard-Suffix "er". Ich erinnere mich an die VS C ++ - Konvention, einfach ein "Ich" vor alles zu werfen. Ist das "idiomatisch"?

Irgendwelche Vorschläge

Antworten auf die Frage(6)

Ihre Antwort auf die Frage