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

топ 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 писать?

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

Архив записей в блогах:
В ноябре 1910 года Санкт-Петербург гудел и бурлил. Было получено известие, что 20 ноябре 1910 года, умер Лев Толстой — великий писатель и еретик. Тысячи гуманистов устремились в Ясную поляну. Нет, не автора «Войны и мира» хоронили прогрессивные толпы, они чтили врага православия, ...
Падение рубля вызвало множество обсуждений — равнодушных в отношении национальной валюты почти не осталось. ИА «Новороссия» обратилось к профессору НИУ ВШЭ, философу и политологу Олегу Матвейчеву , чтобы разобраться в ситуации и понять — можно ли спокойно засыпать по ночам, не ...
  Иногда человек сталкивается с такой неприятной ситуацией: вроде бы много съел, а чувства сытости все равно не появилось. Уже и не лезет, и смотреть на еду не можешь. Но через 5 минут захочется перекусить еще разок, а затем еще и еще. В чем же может быть причина такого ...
НОВАЯ ПЕСНЯ 29 октября 2025 года Depeche Mode представили новую композицию «In The End». Трек был записан во время сессий их прошлогоднего альбома «Memento Mori», но не вошёл в окончательный трек-лист. Эта песня станет частью издания документального фильма «М», которое поступит в ...
«ЯПОНСКОЕ ЭКОНОМИЧЕСКОЕ ЧУДО» В 1945 году после войны Япония была ...