Рефакторинг — есть такое понятие в программной инженерии, означающее изменение программного кода без внешнего изменения работы программы (внутри программа изменилась, но для пользователя она такая же как и раньше).
Такой рефакторинг случается и при конструировании танков.
Пример «рефакторинга» в механизмах распределения
В механизмах распределения (МР) бортовых коробок передач (БКП) танков Т-64 есть такие детали, которые именуется кулак повышения давления [1], кулак переключения передач [2] или по конструкторской документации просто кулак с добавлением правый или левый в зависимости от того, в каком МР он установлен (выполнены зеркально). На Т-72 аналогичные детали по конструкции немного отличаются и называются кулак передач [3]. И для обоих типов машин по их каталогам деталей и узлов — кулак правый/левый [4; 5].
Выглядят упомянутые детали как показано на рисунке:
Можно заметить, что кулак Т-72 имеет цилиндрическую поверхность постоянного радиуса, а у Т-64 относительно основной цилиндрической поверхности два выступа с большим радиусом. Чтобы эта разница была лучше заметна, посмотрим на кулаки в радиальной плоскости (нормальной оси их вращения):
Что у обоих кулаков общее. На радиальной (торцевой) поверхности обоих кулаков выполнены по два больших углубления и по семь небольших. В эти углубления, как показано на рисунке ниже, упирается блокировочный золотник. Шлиц на радиальной поверхности входит в зацепление с золотником переключения передач, обеспечивая кулаку и золотнику передач одновременное вращение.
На рисунке МР Т-64А выполнен разрез и видно как блокировочный золотник (на первом рисунке выделен зелёным) упирается в радиальную поверхность кулака передач (синий). В таком положении, перекрывая масляный канал к бустеру тормоза Ф5 БКП, блокировочный золотник находится на передачах II—VII и нейтрали. На рисунке показано положение на нейтральной передаче. На первой передаче и заднего хода напротив золотника будут находится большие углубления кулака (на втором рисунке хорошо видно большое углубление первой передачи) и под давлением пружины золотник переместится вправо, открыв масляный канал тормоза Ф5. На передаче ЗХ тормоз Ф5 нормально включен, а на первой передаче он включается в БКП отстающего борта при повороте.
Для МР Т-72 в этой части кулак передач работает идентично и на этом его функции заканчиваются, а у кулака повышения давления Т-64 есть ещё одна, которую проще показать на фрагменте плаката работы МР Т-64.
На схеме, о чем говорилось выше, показана работа кулака передач 34 с блокировочным золотником 33, на схеме 1 — передачи II—VII и нейтраль, на схеме 2 — первая и заднего хода. Также показано как по цилиндрической поверхности переменного радиуса перекатывается ролик рычага повышения давления 4. Поскольку на передачах I и ЗХ через БКП передается наибольший крутящий момент, то для исключения проскальзывания фрикционов давление в их бустерах должно быть выше. Для этого и выполнены два выступа на кулаке передач, которые на передачах I и ЗХ через ролик поворачивают рычаг повышения давления, последний упирается в хвостовик вильчатого рычага 7 и через него поджимает золотник регулятора давления 42. В этом положении давление масла определяется жесткостью пружины 5 рычага повышения давления.
А теперь обещанный рефакторинг.
БКП и их МР танков Т-72 были унаследованы с ранних Т-64А с некоторыми изменениями. Одно из них затронуло и функции кулака передач. Посмотрим на аналогичную схему работы МР с плаката для Т-72.
Очень похоже на плакат для Т-64А, но есть и бросающиеся в глаза отличия. Теперь кулак передач, о котором идет речь, непосредственно не воздействует на рычаг повышения давления. Вместо этого введен золотник повышения давления 45 и изменен блокировочный золотник 21, который на I передаче и ЗХ не только открывает масляный канал тормоза Ф5, но также и отвод от канала фрикциона Ф3, который включен на этих передачах. Через отвод канала Ф3 обеспечивается подвод масла к золотнику повышения давления. Золотник всплывает и, упираясь в хвостовик рычага повышения давления 4, поворачивает его. Далее МР работает точно так же, как на Т-64А.
Эти изменения конструкции МР, за исключением незначительно снижения быстродействия, никак не изменяют работу БКП. На передачах включаются такие же фрикционные устройства, также увеличивается давление на низших передачах. Поэтому программист эти изменения конструкции вполне может назвать рефакторингом.
Грабли рефакторинга на примере кулака передач МР
Заведя разговор о рефакторинге я указал что это, но не упомянул зачем. Целью рефакторинга является упрощение программного кода для улучшения его понимания, облегчения последующей разработки нового функционала и поддержки кода.
То же самое есть и в машиностроительном конструировании. Конструкция детали может изменяться с целью её упрощения и повышения технологичности изготовления. При этом функция детали остаётся без изменений.
И здесь скрываются известные опытным программистам и конструкторам грабли. Сложный программный код или деталь с «лишними» проточками и «ненужными» изгибами формы далеко не всегда следствие «глупости» сделавших так предшественников. Например, есть функция, которая возвращает произведение переменных А и В. Внутри функции мы видим как переменной присваивается значение константы N, а потом к ней добавляется произведение А и В. Перед выводом результата N отнимается. Результат работы функции верный, но сопровождается бессмысленными действиями. В рамках рефакторинга очевидно, что манипуляции с N следует удалить. И тут может оказаться, что в какие-то моменты после рефакторинга приложение начало глючить. И мы не можем понять почему, поскольку результат работы функции никак не изменился, она работает верно. Она-то работает верно, но это специфическое приложение реального времени на специфической аппаратуре, где манипуляции с N это «костыль», обеспечивающий таким странным образом синхронизацию работы функции с другими подсистемами. Вполне возможно, что разработчик функции пришёл к этому решению эмпирическим путём, потратив на его поиск человекодни.
Этот пример гипотетический, не стоит его рассматривать слишком серьёзно.
То же самое и в конструировании. Можно изменить конструкцию для упрощения эксплуатации или сборки, а потом окажется, что к ней приходили через длинный путь доработок и изменений и это упрощение ведет к снижению надёжности. От такого упрощения, снова набив старые шишки, придется отказаться.
После пространного отступления вернёмся к кулаку передач и попробуем провести его рефакторинг.
Внимательный читатель мог заметить, что на радиальной поверхности кулака передач из всех углублений, соответствующих передачам в БКП, функциональную нагрузку несут только два больших, соответствующих первой передаче и ЗХ. И если от всех этих углублений, кроме двух упомянутых, отказаться, то работа блокировочного золотника в паре с кулаком передач никак не изменится.
Такое изменение упрощает конструкцию, уменьшает число технологических операций. Деталь становится технологичнее и дешевле. И танки продолжают ездить так же, как и раньше...
Мы оформляем рацпредложение, получаем премию и радуемся! Вот он, настоящий рефакторинг!
Но в какой-то момент, далеко не сразу и, возможно на одной машине из сотни, в одной из БКП перестаёт включаться задний ход и не включается поворот на первой передаче. Но почему?!
Так получилось, что изначально на кулаке поворота и было только два углубления для первой передачи и ЗХ. И иногда, довольно редко, но всё же, блокировочный золотник после долгой остановки в одном положении залипал, после чего не проталкивался пружиной в углубления кулака. В результате проточка масляного канала тормоза Ф5 оставалась заблокированной, исключая его включение.
Маленькие углубления, выполненные на кулаке для всех передач, являются тем самым «костылём», который не несёт функциональной нагрузки но исключает залипание блокировочного золотника, поскольку при каждом переключении передач золотник страгивается относительно положения, в котором находился при включенной передаче.
Кулаки передач с углублениями на всех передачах (432.62.043-3 и 432.62.044-3) были введены в июле 1971 года взамен старых без углублений (432.62.043-1 и 432.62.044-1). Старые и новые кулаки взаимозаменяемы.
Автор: В. Чобиток
P. S. Предлагаю подумать и ответить на вопрос: почему в повествовании одну и ту же деталь я иногда называю кулаком переключения передач, а иногда кулаком повышения давления?
Источники информации
- Техническое описание танка Т-64. — М. : Воениздат МО СССР, 1969.
- Объект 434. Техническое описание и инструкция по эксплуатации. Кн. 2. — М. : ЦНИИ Инф., 1974.
- Танк Т-72А. Техническое описание и инструкция по эксплуатации. Кн. 2. Ч. 1. — М. : Воениздат МО СССР, 1989.
- Объекты 434, 437А и 447А. Каталог деталей и сборочных единиц. Кн. 1. Сборочные единицы и детали. Ч. 2. — М. : Воениздат, 1989.
- Танк Т-72. Каталог деталей и сборочных единиц. — М. : Воениздат, 1980.