Я пишу JavaScript скриптов, которые взаимодействуют с GUI windows. В большинстве c терминов я определяю объекты и пишу функции для взаимодействия с этими объектами. Моя стандартная практика - создать объект для каждого поля в окне, а затем функцию для взаимодействия и функцию для проверки.
Так, например, если у меня есть такое окно:
Пример окна
У меня был бы один объект для выпадающего поля № 1, а другой - для текстового поля. То же самое для поля №2. У меня также есть объект для кнопки «Готово». Затем у меня была бы функция для выбора из раскрывающегося поля №1, ввода текста в текстовый объект, нажатия кнопки «Готово» и т. Д. c. Это упрощение, но основная идея. Мы используем класс для общей компоновки окна, а затем дочерние классы для каждого отдельного окна, но все они в основном работают таким образом.
Хорошо, у меня есть окно, в котором я пытаюсь создать функцию быстрого доступа где я хочу выбрать вариант из раскрывающегося списка в зависимости от того, не установлен ли текст в текстовом поле для этого. Это легко проверить, так как есть только два варианта: «Да» и «Нет».
Итак, у меня есть этот кусок длинного кода для простой операции:
function toggleOption(option)
{
//Simplistic check to see that users are only using Yes or No
if (option.length > 3)
{
test.fatal("FATAL: \"" + option + "\" is not a valid input. Please use a variant of \"Yes\" or \"No\"");
}
//Allows for multiple variants of yes/no to be used in the option parameter
option = option.substring(0,1).toUpperCase();
var text;
//Defines a text variable depending on what option is used
if (option === "Y")
{
text = option + " - Yes";
}
else
{
text = option + " - No";
}
// Opens the window if not already open
if (!object.exists(names.Window))
{
openWindow();
}
// There are two fields that will be selected
// Only selects the option if the text box is set to a different option.
if (waitForObjectExists(names.TextBox1).text !== text)
{
selectField1(option);
clickDoneButton();
}
// Only selects the option if the text box is set to a different option.
if (waitForObjectExists(names.TextBox2).text !== text)
{
selectField2(option);
clickDoneButton();
}
//The assumption is that this is going to take care of closing the window (which automatically closes when done is clicked) if none of the options are selected.
if (object.exists(names.Window))
{
closeWindow();
}
}
Итак, весь этот код работает, но он кажется смехотворно запутанным и раздутым для чего-то, что должно быть довольно простым. Мне было интересно, есть ли у кого-нибудь представление о методах, которые я мог бы использовать, чтобы упростить это и сделать его более эффективным.
ПРИМЕЧАНИЕ. Я заменил фактические имена объектов на общие c имена, чтобы, надеюсь, сделать код более разборчивым. Извините, если я пропустил какие-либо изменения текста.