Ich werde einfach meinen Code schreiben:Schnittstelle Namenskonvention Golang
/*
* 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 angemerkt werden, dass Serversession ist auch eine Schnittstelle, ruft „ServerSessioner“ fühlt sich einfach wackelig zu mir.
Ich spiele mit der Idee, eine Schnittstelle mit IsRole() und AssumeRole() zu erstellen, aber "Roler" scheint sehr wackelig. Es dämmert mir, dass ich wirklich keine Namenskonventionen für Schnittstellen kenne oder jemals zuvor gefunden habe, abgesehen von dem Standard-Suffix "er". Ich erinnere mich, dass die VS C++ - Konvention einfach ein "Ich" vor alles wirft. Ist das "idiomatisch"?
Irgendwelche Vorschläge?
Ich würde es nur 'RoleSupport' nennen, aber das Erreichen von English.SE wäre in der Tat ein interessantes Unterfangen. Bitte denken Sie daran, 'this' nicht zu verwenden, um Methodenempfänger zu benennen: Dies ist als unidiomatisches Go verpönt. [Ein Beispiel] (http://stackoverflow.com/q/23482068/720999) über diese Angelegenheiten zu diskutieren. – kostix
Ja, ich habe mit Empfängernamen gekämpft. Ich weiß, dass die Go-Idiom ist, einzelne Buchstaben Variablen zu verwenden .... Es tut mir leid, ich kann das nicht tun. "Dies" oder "Selbst" ist in jeder anderen Sprache so weit verbreitet, dass es die Bedeutung eindeutig definiert. "RoleSupport" ist in Ordnung, passt aber nicht zu einem ordentlichen Muster. – Dale
Nicht einzelne Buchstaben, sondern aussagekräftige Abkürzungen - mit einzelnen Buchstaben, die für kurze Funktionen OK sind (Ihre eingeschlossen). "Jede andere Sprache" ist sicher eine grobe Übertreibung.Aus irgendeinem Grund ist das kein Problem für mich: verschiedene Sprachen * fühlen * anders. Anfänger-Programmierer versuchen wirklich, Trick-Hunde zu sein, die versuchen, ihre erlernten Fähigkeiten in jede neue Sprache zu tragen, der sie gegenüberstehen (da waren sie selbst), aber es ist immer besser, die Philosophie hinter der Sprache zu verstehen und dabei zu bleiben. – kostix