Ответ 1
Есть ли у X комментарии?
Напишите свой маленький язык, например, псевдокод в комментариях.
Я разрабатываю приложение, используя неправильные инструменты. Я не хочу вдаваться в права или заблуждения этого - платформа была благословлена как Стратегия, и сейчас ничего не изменится. Но я надеюсь, что кто-то может дать мне несколько советов о том, как сделать все возможное.
Мы используем серверный язык, позволим ему X и клиентский HTML/JS/CSS (на IE6). X является примитивным с точки зрения разработки приложений (но отлично подходит для обработки данных, поэтому мы его используем); у него даже нет концепции пользовательских функций, поэтому попытка сделать модульное приложение каким-либо образом является проблемой. Подумайте десятки тысяч строк вложенных операторов if/then/else.
Мое нынешнее предположение заключается в том, что сокращение спагетти-фактора кода будет невозможно, и что действительно отличная документация - это мое единственное оружие против этого, что становится абсолютно неподъемным кошмаром, который заканчивается на TheDailyWTF.
У кого-нибудь есть другие идеи?
(Я не упоминаю, какой язык X просто потому, что я надеюсь получить ответы на общую проблему работы с несовершенными инструментами, а не на какую-то особую тактику для X.)
Edit:
Хорошо, для странно любопытных X - это SAS. Я не хотел, чтобы вопрос фокусировался на том, являются ли функциональные макросы функциями (они не являются и не могут реализовывать шаблоны проектирования), или винить его - учитывая ограничения этого конкретного проекта, я фактически согласен с решением использовать Это! Я также уверен, что большая часть программного обеспечения разрабатывается в невероятно неоптимальных средах (сломанные инструменты, плохое управление, владение устаревшим бременем и т.д.) И что должны быть стратегии для того, чтобы все это работало.
Есть ли у X комментарии?
Напишите свой маленький язык, например, псевдокод в комментариях.
Вы знакомы с Церковная диссертация?
Если вы не можете решить "A" в Y, но вы можете эмулировать Z в Y, а Z может решить "A" , тогда по определению Y может решить "A" .
Может быть, вы можете написать обобщенную рутину, которая каким-то образом делает X более эффективным для данной проблемы? Что-то вроде расширения X, или, что еще лучше, малоязычный, реализованный в X?
Похоже, что другие склонны связывать "маленький язык" с документацией. Хотя вы можете попытаться пойти таким путем (в этом случае я предлагаю вам взглянуть на Robodoc) Я думал что-то ближе к Wasabi, в подходе - т.е. действительно используя ваш инструмент X, чтобы создать своего рода интерпретатор для X ++ или даже Y, не зная, что X я не могу, конечно, более конкретно.
В дополнение к документации, выбор имен переменных и соглашений о том, как они используются, может немного помочь. Также вы можете создать некоторые структурные соглашения в коде, чтобы была некоторая закономерность. Вернемся назад, когда, когда люди написали ассемблер, хорошие кодеры создали читаемый код.
hmmmm, звучит как другой разработчик MUMPS/Intersystems Cache;)
Серьезно, однако, вы можете проверить, есть ли какие-либо инструменты для "X", которые могут отображать поток программы, или как часть процесса документации вырывают что-то вроде Visio или другого подобного инструмента, где вы можете пройти код и наметить, что он делает (более или менее). Самая трудная часть, вероятно, должна была бы вернуться назад и смотреть на эту стену кода и сразу же прыгать назад, чтобы все, что вы могли сделать, чтобы документировать ее/графа/диаграмму, это поможет.Можно ли использовать другую технологию, лучше подходящую для вашей проблемы между X и клиентской стороной?
В качестве альтернативы вы можете использовать больше инструкций IF/Then/else для построения модульных блоков кода, что может помочь в обслуживании.
Мне трудно поверить, что у вас нет каких-либо пользовательских функций, доступных в X - даже пакетных файлах есть функции (вид)
Как только у вас есть функции, вы можете сделать вещи хотя бы довольно модульными.
Вы можете найти нужный вам язык и реализовать обычные "шлепать некоторые данные в шаблон" в этом случае и использовать обертки для вызова "Х" для тех вещей, которые вам нравятся.