Рубрики
Без рубрики

Плевые пользовательские интерфейсы – почему вы должны избегать их

В этом руководстве показано, что означает выделение аварийных интерфейсов пользовательских интерфейсов и почему они обескуражены под философией Unix. Я написал это в качестве проекта первой главы для моей предстоящей книги «от одного до нуля», чтобы появиться в 2020 году со Сан-Франциско издателем Nostarch. Какой тайный пользовательский интерфейс (CUI)? Независимый пользовательский интерфейс является … Phinive пользовательских интерфейсов – почему вы должны избегать их читать дальше »

Автор оригинала: Chris.

В этом руководстве показано, что означает выделение аварийных интерфейсов пользовательских интерфейсов и почему они обескуражены под философией Unix. Я написал это в качестве первой главы для моей предстоящей книги «От одного до нуля» Чтобы появиться в 2020 году со Сан-Франциско издателем Nostarch.

Какой тайный пользовательский интерфейс (CUI)?

Заключенный пользовательский интерфейс является способом проектирования программы, которая требует от пользователя взаимодействовать с программой на сеансе, прежде чем они смогут продолжить свой основной поток выполнения. Если вы вызываете программу в вашем терминале (Windows, MacOS или Linux), вы должны взаимодействовать с программой, прежде чем вы сможете вернуться к терминалу. Примеры представляют собой мини-программы, такие как SSH, TOP, CAT, VIM – а также языковые функции программирования, такие как функция ввода Python ().

Пример Python Phance Interface

Скажем, вы создаете простое калькулятор продолжительности жизни в Python. Пользователь должен ввести их возраст, и он возвращает ожидаемое количество лет, оставленных на основе простой эвристики. Это забавный проект найден здесь Отказ

"If you're under 85, your life expectancy is 72 minus 80% of your age.
Otherwise it's 22 minus 20% of your age."

Ваш начальный, плохой, код Python отображается здесь:

def your_life_expectancy():
    age = int(input('how old are you? '))
    
    if age<85:
        exp_years = 72 - 0.8 * age
    else:
        exp_years = 22 - 0.2 * age

    print(f'People your age have on average {exp_years} years left - use them wisely!')


your_life_expectancy()

Листинг 8-8: Ожидаемая продолжительность жизни калькулятор – простой эвристический – реализован в виде неполночного пользовательского интерфейса.

Вот несколько прогонов кода:

>>> how old are you? 10
People your age have on average 64.0 years left - use them wisely!
>>> how old are you? 20
People your age have on average 56.0 years left - use them wisely!
>>> how old are you? 77
People your age have on average 10.399999999999999 years left - use them wisely!

Интерактивный ноутбук Jupyter, чтобы рассчитать свою продолжительность жизни, используя невыполненный пользовательский интерфейс

Если вы хотите попробовать самостоятельно, я создал интерактивный ноутбук Jupyter, вы можете запустить в своем браузере, чтобы рассчитать свою собственную продолжительность жизни. Но, пожалуйста, не берите это слишком серьезно! Вот тетрадь:

Код использует Python’s вход () Функция, которая блокирует выполнение программы и ждет для ввода пользователя. Без ввода пользователя код ничего не делает. Это серьезно ограничивает удобство использования кода.

Что, если я хотел рассчитать продолжительность жизни в течение каждого возраста от 1 до 100 на основе эвристического и сюжет ее? Я должен был вручную вводить 100 разных возрастов и хранить результаты в отдельном файле. Затем вам придется скопировать и вставить результаты в новый скрипт, чтобы построить его.

Функция действительно делает две вещи: обрабатывать пользовательский ввод и рассчитать продолжительность жизни. Это уже нарушает правило № 3: Сделать каждую программу сделать одну вещь Хорошо Отказ

Но это также нарушает наше правило: Не используйте съемные пользовательские интерфейсы если возможно.

Некомплетный пользовательский интерфейс Python Пример

Вот как функция может быть реализована более чисто:

def your_life_expectancy(age):
    if age<85:
        return 72 - 0.8 * age
    return 22 - 0.2 * age


age = int(input('how old are you? '))
exp_years = your_life_expectancy(age)
print(f'People your age have on average {exp_years} years left - use them wisely!')

Листинг : Ожидаемая продолжительность жизни калькулятор – простой эвристический – без пленочного интерфейса пользователя.

Код функционально идентичен коду с аварийным пользовательским интерфейсом. Тем не менее, он имеет большое преимущество: теперь вы можете использовать функцию в разных и неожиданных и неожиданных способах разработчика:

import matplotlib.pyplot as plt


def your_life_expectancy(age):
    '''Returns the expected remaining number of years.'''
    if age<85:
        return 72 - 0.8 * age
    return 22 - 0.2 * age


# Plot for first 100 years
plt.plot(range(100), [your_life_expectancy(i) for i in range(100)])

# Style plot
plt.xlabel('Age')
plt.ylabel('No. Years Left')
plt.grid()

# Show and save plot
plt.savefig('age_plot.jpg')
plt.savefig('age_plot.pdf')
plt.show()

Листинг : Код, чтобы построить продолжительность жизни в течение многих лет 0-99.

Полученный график показан на следующем рисунке:

Фигура : Как эвристические работы на входные годы 0-99.

Давайте не будем слишком много говорить о недостатках этой эвристики – это грубые нефтью, но сосредоточиться на том, как правило избегания неводного пользовательского интерфейса помогла нам произвести этот участок. Без правила, нам пришлось бы написать новую функцию, добавлять избытки и ненужную сложность. Учитывая правило, мы упростили код и открыли все виды будущих программ для использования и построенного эвристика. Вместо того, чтобы оптимизировать для одного конкретного случая использования, мы написали код в общем способе, который можно использовать сотнями разных приложений.

Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.

Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python одноклассники (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.

Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.

Оригинал: “https://blog.finxter.com/captive-user-interfaces-why-you-should-avoid-them/”