программерское

топ 100 блогов amarao_san05.10.2015 А вот одна из причин, почему я ощущаю себя плохопрограммистом - это способность хорошо формулировать мысли на среднем уровне. Если grand design ещё как-то можно (хотя редко могу оценить что получится), и если на локальном уровне (в пределах функции) моей выразительности хватает, но на тактическом уровне (в пределах пары-тройки классов и их взаимоотношений) я плыву страшно.

То есть какой-то тривиальный конструктор из "class Device" с методами сбора информации и разных операций я делал с пятой попытки, изобретая какие-то адские речекряки с глобалами, в которые лазали три разных класса и "всё равно" получалась путаница.

Я не знаю как это у "настоящих программистов" происходит, но в программировании я ощущаю ровно три проблемы:

1) Ошибки дизайна среднего уровня (которые приводят к постоянному недоперерефакторингу, сильно замедляющему всё и вся).
2) Чрезмерные обобщения и универсализация того, что универсализировать не надо (условно, у того же class Device метод update_info зачем-то принимает параметром "устройство" помимо self, да ещё и делает с десяток проверок, чтобы понять, что этот 'device' это то, для чего можно выполнять проверки - хотя чуть раньше почти они же делались в __init__/
3) Острую нехватку знаний о том, "как делать правильно".

Вот написал я класс Device, который данное блочное устройство с разных мест облизывает. И точку монтирования для него находит, и номер в энкложе, и букву диска, и статусы, и смарты, и uuid файловой системы, и даже делает всякое полезное типа монтировать/отмонтировать.

А теперь как бы мне для него юнит-тесты-то написать?

__init__ дёргает кучу внутренних функций, которые лезут в реальные блочные устройства (по абсолютному пути) и что-то там выискивают.

И как я его тестировать должен?

Допустим (упрощая задачу):

class Device:
    def __init__(self, device):
        with file('/sys/block/%s/device/status' % device, r) as f:
            self.status = f.read().strip()
        self.device = device

И как мне для такого unit-test писать?

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

Архив записей в блогах:
Московские номера машин, русская речь, детские радостные визги - со всех сторон. Еще год назад такого не было, а сейчас здесь все изменилось. Действительно, зачем нашим туристам Крым или Турция, когда здесь всего за 27 тыс. рублей на семью можно махнуть через море. Кстати, все теперь на ...
Тут многие говорят, что на западе, мол, точно так же строят высокие дома в спальных районах. Давайте посмотрим. Думаете, это очередное здание в Манхеттене с квартирами для толстосумов? А вот и фигушки! :) Это - жилое здание, находящееся в одном из районов Квинса - Far Rockaway, ...
Необычное требование выдвинули рабочие завода «Эмпилс» своему руководству. Ростовчане потребовали поменять радиостанцию, музыка которой долгое время звучала каждое утро в цеху. «У нас на заводе в течение получаса до начала рабочего дня играет музыка – репертуар «Ретро FM», инструментальны ...
После выговора от врио начальника СИЗО Сергея Лисичкина за вызов врачей ночью репрессии набирали ещё большую динамику. Вышел истинный хозяин тверских казематов Сергей Виноградов и тут же собрал очередную дисциплинарную комиссию. Преступив порог кабинета для расправ над заключенными, я ...
Чото ржу - робот нашел мой пост-наброс от 8 ноября 2014 года, насладитесь : Владимир Владимирович! Мы ждём... Являясь (как и подавляющее большинство россиян) искренним патриотом России, я с восторгом поддерживаю аннексию Россией Крыма и блестящую реализацию проекта "новороссия". ...