{
hmap := make(map[string]int8, len(positives)+len(negatives))
for _, word := range positives {
hmap[word] = 1
}
for _, word := range negatives {
hmap[word] = -1
}
word = strings.ToLower(word)
words := strings.Split(word, " ")
var matched int
for _, word := range words {
if n, ok := hmap[word]; ok {
matched += int(n)
}
}
return matched >= amount, nil
} Можно как-то улучшить эту функцию?
Если эта функция вызывается много раз для разных слов, но с одинаковыми negatives и positives, то решение кривовато, map каждый раз заполняется. Ну и single responsibility страдает. Оно не только считает, но и данные для подсчёта формирует.
Ну и особый котёл в аду за использование локальных переменных с тем же именем, что и параметр функции.
что значит KeywordsChecker? во-первых название функции не должно быть существительным, оно должно быть императивным (команда) например append (добавь), make (сделай), delete, recover, print из названия не понятно что эта функция делает и зачем она нужна
Не всегда команда, тут больше похоже на IsWordPositive. Результат boolean.
не всегда конечно, примеры тому new, real, len, cap
там вообще sentence а не word
но KeywordsChecker или даже CheckKeywords это вообще не о чём, совершенно не понятно зачем оно нужно
Обсуждают сегодня