Friday, November 14, 2014

Бочка дёгтя в ложке мёда


(15.11.2014)

"Вот казалось бы, всё есть, а счастья нет"
(народная идиома)


   Как известно, отрицательный результат - тоже результат. Но для человека не достигшего успеха, это является слабым утешением, так как и дураку ясно, что ложных путей тысячи, а плодотворных тропок раз-два и обчёлся. Я как могу пытаюсь продвинуться в визуализации, в том далеко несовершенном виде, в котором её понимаю, однако, есть смутное опасение, что ничего путного не выйдет. Решил все подобные сомнения, все трудности с которыми сталкиваюсь, собирать здесь и наполнить эту "бочку дегтя" до краев, а ложка мёда в ней на дне есть. И ложечка эта заключается в том, - что уже не возникает подсознательного желания забросить работу на верхнем уровне, уровне кодограмм и опять спуститься в адову кочегарку текстового кодирования.

- Итак, первый черпак дёгтя. После того, как какой-либо силуэт в кодограмме достигает значительного размера, возникает трудность с его восприятием.

Совершенно очевидно, что это вовсе не проблема, - нужно использовать старую, добрую декомпозицию. Вопрос только какую? Разбивать на более мелкие силуэты, или выделять блоки визуально?

На картинке внизу с тремя верхними силуэтами работать легко и приятно, с нижним очень тяжело и мне приходится заставлять себя его модифицировать. Впрочем, оно и понятно, когда преступно нарушается "Принцип красоты" ничего хорошего не жди.



- Вторая трудность. Очень хочется использовать готовые иконки, да так и делаю, но в них не всегда находится один и тот же код. Приходится каждый раз перепроверять, что напрягает. Пожалуй, настало время ввести ещё один принцип - Принцип соответствия содержания и формы в рамках одного контекста. Вопрос в том, что является контекстом? Кодограмма или силуэт? Хорошо бы оформить этот принцип в строгое правило и выполнять проверку его соблюдения. Ведь если задуматься, то фактически набор кодирующих икон это слова(или буквы) предметного языка. А должны быть ещё ветви, кусочки последовательностей, то есть предложения этого языка. Очень напоминает forth.  


-  Ещё вспомнил. Огромный ковш дёгтя - это рефакторинг. Очень сложно его делать в кодограмме. Обычно, чтобы просто переименовать(самый простейший вид рефакторинга) все переменные или имена методов, приходится открывать graphml в текстовом редакторе и производить контекстную замену. В принципе, может наплевать на нижний уровень вовсе?

- Многие мелкие ошибки отлавливаются в момент компиляции кода на нижнем уровне, приходится их исправления переносить ручками наверх. Правда, для того чтобы закрыть эту проблему я потратил много усилий на реверскодинг(не путать с реверсинженирингом), однако, пока на практике не использовал.  К слову сказать, эта проблема не является существенной и не вызывает особых трудностей.


 Пока всё, буду добавлять...лять...лять...  


No comments:

Post a Comment