Объяснение [закрытого] рефакторинга

Вам нужно использовать Юникод. Вот Unicode, полученный из этого ответа :

unicode_map = {
         #           superscript     subscript
        '0'        : ('\u2070',   '\u2080'      ),
        '1'        : ('\u00B9',   '\u2081'      ),
        '2'        : ('\u00B2',   '\u2082'      ),
        '3'        : ('\u00B3',   '\u2083'      ),
        '4'        : ('\u2074',   '\u2084'      ),
        '5'        : ('\u2075',   '\u2085'      ),
        '6'        : ('\u2076',   '\u2086'      ),
        '7'        : ('\u2077',   '\u2087'      ),
        '8'        : ('\u2078',   '\u2088'      ),
        '9'        : ('\u2079',   '\u2089'      ),
        'a'        : ('\u1d43',   '\u2090'      ),
        'b'        : ('\u1d47',   '?'           ),
        'c'        : ('\u1d9c',   '?'           ),
        'd'        : ('\u1d48',   '?'           ),
        'e'        : ('\u1d49',   '\u2091'      ),
        'f'        : ('\u1da0',   '?'           ),
        'g'        : ('\u1d4d',   '?'           ),
        'h'        : ('\u02b0',   '\u2095'      ),
        'i'        : ('\u2071',   '\u1d62'      ),
        'j'        : ('\u02b2',   '\u2c7c'      ),
        'k'        : ('\u1d4f',   '\u2096'      ),
        'l'        : ('\u02e1',   '\u2097'      ),
        'm'        : ('\u1d50',   '\u2098'      ),
        'n'        : ('\u207f',   '\u2099'      ),
        'o'        : ('\u1d52',   '\u2092'      ),
        'p'        : ('\u1d56',   '\u209a'      ),
        'q'        : ('?',        '?'           ),
        'r'        : ('\u02b3',   '\u1d63'      ),
        's'        : ('\u02e2',   '\u209b'      ),
        't'        : ('\u1d57',   '\u209c'      ),
        'u'        : ('\u1d58',   '\u1d64'      ),
        'v'        : ('\u1d5b',   '\u1d65'      ),
        'w'        : ('\u02b7',   '?'           ),
        'x'        : ('\u02e3',   '\u2093'      ),
        'y'        : ('\u02b8',   '?'           ),
        'z'        : ('?',        '?'           ),
        'A'        : ('\u1d2c',   '?'           ),
        'B'        : ('\u1d2e',   '?'           ),
        'C'        : ('?',        '?'           ),
        'D'        : ('\u1d30',   '?'           ),
        'E'        : ('\u1d31',   '?'           ),
        'F'        : ('?',        '?'           ),
        'G'        : ('\u1d33',   '?'           ),
        'H'        : ('\u1d34',   '?'           ),
        'I'        : ('\u1d35',   '?'           ),
        'J'        : ('\u1d36',   '?'           ),
        'K'        : ('\u1d37',   '?'           ),
        'L'        : ('\u1d38',   '?'           ),
        'M'        : ('\u1d39',   '?'           ),
        'N'        : ('\u1d3a',   '?'           ),
        'O'        : ('\u1d3c',   '?'           ),
        'P'        : ('\u1d3e',   '?'           ),
        'Q'        : ('?',        '?'           ),
        'R'        : ('\u1d3f',   '?'           ),
        'S'        : ('?',        '?'           ),
        'T'        : ('\u1d40',   '?'           ),
        'U'        : ('\u1d41',   '?'           ),
        'V'        : ('\u2c7d',   '?'           ),
        'W'        : ('\u1d42',   '?'           ),
        'X'        : ('?',        '?'           ),
        'Y'        : ('?',        '?'           ),
        'Z'        : ('?',        '?'           ),         
        '+'        : ('\u207A',   '\u208A'      ),
        '-'        : ('\u207B',   '\u208B'      ),
        '='        : ('\u207C',   '\u208C'      ),
        '('        : ('\u207D',   '\u208D'      ),
        ')'        : ('\u207E',   '\u208E'      ),        
        ':alpha'   : ('\u1d45',   '?'           ), 
        ':beta'    : ('\u1d5d',   '\u1d66'      ), 
        ':gamma'   : ('\u1d5e',   '\u1d67'      ), 
        ':delta'   : ('\u1d5f',   '?'           ), 
        ':epsilon' : ('\u1d4b',   '?'           ), 
        ':theta'   : ('\u1dbf',   '?'           ),
        ':iota'    : ('\u1da5',   '?'           ),
        ':pho'     : ('?',        '\u1d68'      ),
        ':phi'     : ('\u1db2',   '?'           ),
        ':psi'     : ('\u1d60',   '\u1d69'      ),
        ':chi'     : ('\u1d61',   '\u1d6a'      ),
        ':coffee'  : ('\u2615',   '\u2615'      )
    }

И для целей вырезать и вставить (из здесь ):

⁰ ¹ ² ³ ⁴ ⁵ ⁶ ⁷ ⁸ ⁹ ⁺ ⁻ ⁼ ⁽ ⁾ ₀ ₁ ₂ ₃ ₄ ₅ ₆ ₇ ₈ ₉ ₊ ₋ ₌ ₍ ₎ 
ᵃ ᵇ ᶜ ᵈ ᵉ ᶠ ᵍ ʰ ⁱ ʲ ᵏ ˡ ᵐ ⁿ ᵒ ᵖ ʳ ˢ ᵗ ᵘ ᵛ ʷ ˣ ʸ ᶻ 
ᴬ ᴮ ᴰ ᴱ ᴳ ᴴ ᴵ ᴶ ᴷ ᴸ ᴹ ᴺ ᴼ ᴾ ᴿ ᵀ ᵁ ⱽ ᵂ 
ₐ ₑ ₕ ᵢ ⱼ ₖ ₗ ₘ ₙ ₒ ₚ ᵣ ₛ ₜ ᵤ ᵥ ₓ ᵅ ᵝ ᵞ ᵟ ᵋ ᶿ ᶥ ᶲ ᵠ ᵡ ᵦ ᵧ ᵨ ᵩ ᵪ

8
задан Jeff Yates 23 August 2013 в 15:18
поделиться

9 ответов

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

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

3
ответ дан 5 December 2019 в 12:14
поделиться

Я не 100% для понимания вопроса, но я думаю, что можно послать себя Кодировать Запах, который должен быть пересмотрен. Это содержит большой пример, который Вы могли показать другому.

Вот список того, когда рефакторинг должен использоваться (список запаха кода)

2
ответ дан 5 December 2019 в 12:14
поделиться

Если Вы не считали его, у Martin Fowler есть превосходная книга по предмету под названием Рефакторинг: Улучшение Дизайна Существующего Кода. Он вдается в существенные подробности о том, как и почему должна быть пересмотрена определенная часть кода.

Я смущался даже упоминать это из опасения, что знание этой книги принято кем-то спрашивающим о рефакторинге, и что Вы думали бы, "Понятное дело, я имел в виду помимо книги Fowler". Но что эй, там Вы идете.:-)

2
ответ дан 5 December 2019 в 12:14
поделиться

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

Рефакторинг может быть искусством и просто берет практику. Чем больше Вы делаете это, тем лучше Вы достигаете его. Продолжайте изучать методы, описанные в книге Ractoring Martin Fowler, и используйте свои инструменты (Resharper для народа Visual Studio)

1
ответ дан 5 December 2019 в 12:14
поделиться

Вы не упоминаете тесты. 'Доказать', что рефакторинг не повреждает существующую функциональность, у Вас должны или быть существующие тесты или тесты записи прежде, чем сделать рефакторинг.

2
ответ дан 5 December 2019 в 12:14
поделиться

Один простой способ забеременеть рефакторинга находится тут же на имя - это точно так же, как при факторинге общей переменной из уравнения:

xy + xz

становится

x(y + z)

X был факторизован. Рефакторинг кода является тем же самым, в этом Вы находите дублирующий код или логику и факторизуете его.

1
ответ дан 5 December 2019 в 12:14
поделиться

Это кажется, что Ваш подход является очень хорошим. В конце процесса Вы показали, как Вы смогли раскрыть и решить много проблем. В образовательных целях могло затем быть интересно изобрести новое изменение/улучшение/устранять. Вы могли затем спросить свой mentoree, как они выполнят то изменение со старым новая кодовая база. Надо надеяться, они будут видеть, что намного легче внести новое изменение с пересмотренным кодом (или как выполнение большего количества рефакторинга было бы самым легким способом подготовиться к гипотетическому изменению).

1
ответ дан 5 December 2019 в 12:14
поделиться

Обучение кому-то осуществить рефакторинг, когда они не естественное, является жестким заданием. По моему опыту, Ваш лучший выбор состоит в том, чтобы сесть с ними в офисе и осуществить рефакторинг некоторый код. В то время как Вы делаете, это поддерживает на высоком уровне диалоговое окно "потока сознания". Разговор о том, что Вы видите, почему код не пахнет правильным, опции осуществить рефакторинг к, и т.д. Также необходимо удостовериться, что они делают то же самое. Самая важная вещь состоит в том, чтобы передать почему, не как, для изменения кода. Любой достойный программист может внести изменение и иметь его работа, но оно берет навык и опыт смочь указать, почему новое решение лучше, чем предыдущее.

1
ответ дан 5 December 2019 в 12:14
поделиться

Я вижу несколько различных способов, которыми Вы могли попытаться преподавать рефакторинг:

Учитывая подобные учебнику примеры. Оборотная сторона здесь - то, что Вы, возможно, изобрели или упрощенные примеры, где то, почему рефакторинг полезен, не обязательно сияет через, а также в других случаях.

Рефакторинг существующего кода. В этом случае Вы могли взять существующий унаследованный код, который Вы очистите, или Ваш собственный код в разработке и покажете прежде и после того, чтобы вносить свою лепту для наблюдения, насколько лучше после, с точки зрения удобочитаемости и простоты maintanence. Это может быть лучшим осуществлением, чтобы сделать, поскольку это - живой код, улучшаемый и расширенный в некоторой степени.

Это не что-то, что кто-то может взять немедленно, это занимает время, практика, усилие и терпение, поскольку некоторые рефакторинги могут быть сделаны для персонального предпочтения, а не потому что код работает оптимально так или иначе.

1
ответ дан 5 December 2019 в 12:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: