четверг, 24 октября 2024 г.

Функции должны возвращать код ошибки (или "throw new Exception")

Например, функция должна сделать выделение строки в гриде:

   public CollectionView SelectRow(int index) {
    var gridElement = driver.FindElementWithWait(_xPath);
    var rowElements = gridElement.FindElements(By.CssSelector(".collection-row"));
    if(rowElements.Count > index)
      rowElements[index].Click();
    return this;
  }

И сразу точно известно, что функция эту задачу выполнит только при условии "rowElements.Count > index"

Если текущий расклад не попадает под условие, то эта функция успешно выполняется, но втихую ничего не делает, т.е. не выполняет свои обязательства.

Вместо этого в этом раскладе должен быть throw new InvalidOperation("почему"): метод вызван в некорректный момент и вызывающий код должен что-то с этим сделать.

Без таких ошибок трудно разбираться с результатами от вызовов других методов после этого метода, для которых контекст вызова уже точно некорректный ("нет выделенной строки"), они не будут работать как задумывал автор и разборки с такими ошибками становятся похожи на квест.

Комментариев нет:

Отправить комментарий