Ну, например, аннотации сообщают о том, что возвращаемые значения некоторых методов должны быть использованы, иначе вызовы таких методов не имеют смысла (может, кто-то забыл присвоить или просто лишний вызов).
Например, есть замечательный метод Vector3.Normalize. В доках, кстати, написано 'Note that this function will change the current vector', хотя статическая версия этого метода (которая вроде как там и описывается) при всём желании не сможет этого сделать. Если пользователь вызвал Vector3.Normalize(vector) и при этом не присвоил результат другой переменной, то вызов не имеет смысла — скорее всего, он думал, что поменяется как раз вектор, переданный в качестве аргумента. Аннотации помогают такие штуки ловить. Без них часто нельзя быть уверенными в том, имеет ли вызов метода смысл, если результат вызова не использован (очевидно, бывают методы, возвращаемые значения которых можно не использовать).
Конечно, это лишь пример работы аннотаций, они используются не только для таких случаев.
Вот этот момент уже действительно достаточно интересный. Большое спасибо, мы обдумаем возможности доработки анализатора, чтобы он мог такое отлавливать.
ClEditInfo cei = _editVarMap[v];
if (cei == null)
{
throw new CassowaryException("SuggestValue for variable " + v + ", but var is not an edit variable\n");
}
По этому фрагменту не соглашусь. В словарь вполне можно записать null. Например,
Действительно, есть такая проблема. Дело в том, что у анализатор тут предполагает, что теоретически значение centerY_ может поменяться при вызове solver.AddConstraint. Однако человеческий глаз, конечно, легко видит тут странный момент, да. Мы подумаем над тем, как нам улучшить работу анализатора в подобных местах, спасибо за отзыв :)