Суть проблемы заключается в том, что текст является одномерным. Даже если у вас есть строки и столбцы, вы обычно читаете их, слово за словом, строка за строкой. Как и компилятор.
И вы пытаетесь представить в нем некие 2-х или более-мерные данные. Например, таблица в порядке мэров строк выглядит следующим образом:
((A, B, C), (D, E, F), (G, H, I))
В этом представлении довольно просто добавить новую строку в конце, не касаясь остальных:
((A, B, C), (D, E, F), (G, H, I), (J, K, L))
Но добавление столбцов немного проблематично, вам нужно прикоснуться к нему в 4 разных местах:
((A, B, C, M), (D, E, F, N), (G, H, I, O), (J, K, L, P))
Обычно вы сталкиваетесь с этой проблемой на практике, когда имеете дело с абстрактными классами: довольно просто добавить новый подтип в качестве нового модуля, но когда вы добавляете новый абстрактный метод, вам нужно дотронуться до всех модулей и добавь это; Вы должны сделать то же самое во многих местах. Обычно вы делаете абстракции для защиты от этих повторяющихся вещей.
Нет решения этой проблемы, если вы используете одномерное представление.
Решением этой проблемы будет редактор, который позволяет вам редактировать эти таблицы как вещи, подобные реальной таблице, а не как текст (в виде, подобном Excel, где вы можете удобно добавлять новые столбцы и строки).