Senior
Оё беҳтар аст, ки интерфейсро дар ҷои иҷроиш ё дар ҷои истифода муайян кунем?
sobes.tech AI
Ҷавоб аз AI
Дар Go беҳтар аст, ки интерфейсҳоро дар ҷойи истифода муайян кунед, на дар ҷойи иҷро. Ин имкон медиҳад, ки интерфейсҳои минималӣ созед, ки танҳо он методҳоро тасвир мекунанд, ки воқеан ба истеъмолкунанда лозиманд.
Ин рӯҳия қобилияти фаровонро афзоиш медиҳад ва санҷишро содда мекунад, зеро иҷроиш бояд ҳамаи интерфейсҳоро бидонад, танҳо онҳое, ки ба онҳо ниёз дорад.
Масалан:
// Дар ҷойи истифода
type Reader interface {
Read(p []byte) (n int, err error)
}
func Process(r Reader) {
// танҳо методи Read-ро истифода мебарад
}
// Дар ҷойи иҷро
type File struct {}
func (f *File) Read(p []byte) (int, error) {
// иҷроиш
}
Бинобар ин, интерфейс дар асоси эҳтиёҷоти муштарӣ муайян карда мешавад, на дар асоси иҷроиш.