Имам голям проблем със изгледа на кода ми след като се справя с всички грешки. Никой никога не трябва да ги игнорира. В следствие на странната идея "няма exeption-и" се получава крайно грозен код. Нека говоря с такъв:
func (lib LocalLibrary) AddMedia(filename string) error {
_, err := os.Stat(filename)
if err != nil {
return err
}
file, err := taglib.Read(filename)
if err != nil {
return err
}
artistID, err := lib.getArtistID(file.Artist())
if err != nil {
return err
}
albumID, err := lib.getAlbumID(file.Album(), artistID)
if err != nil {
return err
}
err = lib.insertTrack(file.Title(), artistID, albumID)
if err != nil {
return err
}
return nil
}
Ще забележите ужасно повтарящите се
if err != nil {
return err
}
Общо взето ако проверите репозиторията на проекта ми ще забележите, че тези три реда са повторени много десетки пъти. Има и няколко вариации, които също се повтарят често и при това една след друга в една и съща функция. Всъщност няма да е никакво преувеличение ако кажа, че поне 40% от кода ми е повторение на горните 3 реда. В примера са 65%. Това просто не трябва да е така. Има ли някакъв идиом с който се справяме с това? До сега нищо не ми е хрумнало. Освен да го правя като kernel хората с goto? Но goto нищо няма да промени точно в този случай. Даже ще добави още повече код и ще го направи по - трудно четимо.