Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.02.2012, 19:46   #11
ds.Dante
Старожил
 
Аватар для ds.Dante
 
Регистрация: 06.08.2009
Сообщений: 2,992
По умолчанию

Я не парсер XML пишу, а обычный подстановщик цифры по одному тегу. И вместо одного простого метода делать несколько, да ещё с рекурсией - не резон. Как раз получится в ущерб читаемости и поддерживаемости. Учтите также время, потраченное на написание кода: если я на каждый метод буду уделять столько внимания, меня уволят с работы за разгильдяйство. :)

Последний раз редактировалось ds.Dante; 28.02.2012 в 19:52.
ds.Dante вне форума Ответить с цитированием
Старый 29.02.2012, 15:51   #12
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

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

Цитата:
если я на каждый метод буду уделять столько внимания, меня уволят с работы за разгильдяйство.
Очень странное поведение начальства. Либо Ваши отношения с ним. Объяснитесь по поводу функции. Мое уже понимает, что если я бегаю казалось бы на пустом месте, значит это ж-ж-ж-ж не спроста.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 29.02.2012, 17:25   #13
ds.Dante
Старожил
 
Аватар для ds.Dante
 
Регистрация: 06.08.2009
Сообщений: 2,992
По умолчанию

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


Цитата:
Сообщение от Utkin Посмотреть сообщение
сразу через "нехочу" сделать как положено и не мучаться ни с отладкой ни с сопровождением.
В каком именно месте могли бы возникнуть проблемы с отладкой или сопровождением?
ds.Dante вне форума Ответить с цитированием
Старый 29.02.2012, 18:06   #14
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
В каком именно месте могли бы возникнуть проблемы с отладкой или сопровождением?
В самом неожиданном. Я не знаю всех условий задачи, но чисто абстрактно - может изменится шаблон строки...
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 29.02.2012, 19:34   #15
ds.Dante
Старожил
 
Аватар для ds.Dante
 
Регистрация: 06.08.2009
Сообщений: 2,992
По умолчанию

И какое это имеет отношение к сабжу? Несколько функций с рекурсией проще отлаживать и рефакторить?
ds.Dante вне форума Ответить с цитированием
Старый 29.02.2012, 20:58   #16
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Не читал все посты, но сразу из примера вашего ясно - разбить на несколько более мелких функций. Самый верный вариант, а не goto и/или дублирование.

UPD:
Цитата:
Код:
public static bool GetFree (String Expression, IEnumerable<String> Exists, out String Result)
Кстати то же зло! Я про out Result. Почему не сделать так?
Код:
public static String GetFree (String Expression, IEnumerable<String> Exists)

Последний раз редактировалось BOBAH13; 29.02.2012 в 21:01.
BOBAH13 вне форума Ответить с цитированием
Старый 29.02.2012, 21:08   #17
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Почему не сделать так?
согласен, если не удалось ничего выпарсить, то возвращаем null.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 29.02.2012, 21:34   #18
ds.Dante
Старожил
 
Аватар для ds.Dante
 
Регистрация: 06.08.2009
Сообщений: 2,992
По умолчанию

Сейчас я так и сделал, но на тот момент (нет доступа ко всем зависимым проектам, сигнатуры методов менять нельзя) то был единственный вариант.

Цитата:
Сообщение от BOBAH13 Посмотреть сообщение
Не читал все посты, но сразу из примера вашего ясно - разбить на несколько более мелких функций.
На какие именно (примерно)?
ds.Dante вне форума Ответить с цитированием
Старый 29.02.2012, 21:35   #19
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Цитата:
Сообщение от ds.Dante Посмотреть сообщение
Сейчас я так и сделал, но на тот момент (нет доступа ко всем зависимым проектам, сигнатуры методов менять нельзя) то был единственный вариант.


На какие именно (примерно)?
Прошу прощения, но вы действительно не замечаете сходства? (дублирование)

Код:
if (Tmp.StartsWith (NumberType.Any.ToString ()))
			{
				#region Any
				Tmp = Tmp.Substring (3);
				Type = NumberType.Any;
				if (!String.IsNullOrEmpty (Tmp))
				{
					if (!Tmp.StartsWith ("(") || !Tmp.EndsWith (")"))
						return false;

					Tmp = Tmp.Substring (1, Tmp.Length - 2);
					if (!String.IsNullOrEmpty (Tmp))
					{
						int p;
						if (!int.TryParse (Tmp, out p))
							return false;

						Param = p;
						UseParam = true;
					}
				}
				#endregion
			}
			else if (Tmp.StartsWith (NumberType.Next.ToString ()))
			{
				#region Next
				Tmp = Tmp.Substring (4);
				Type = NumberType.Next;
				if (!String.IsNullOrEmpty (Tmp))
				{
					if (!Tmp.StartsWith ("(") || !Tmp.EndsWith (")"))
						return false;
					Tmp = Tmp.Substring (1, Tmp.Length - 2);
					if (!String.IsNullOrEmpty (Tmp))
					{
						int p;
						if (!int.TryParse (Tmp, out p))
							return false;

						Param = p;
						UseParam = true;
					}
				}
				#endregion
			}
BOBAH13 вне форума Ответить с цитированием
Старый 29.02.2012, 21:37   #20
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
согласен, если не удалось ничего выпарсить, то возвращаем null.
Лучше не null, а пустую строку.
BOBAH13 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Goto Avvakymova Паскаль, Turbo Pascal, PascalABC.NET 4 09.05.2011 16:25
Оператор GoTo Dalokoshka Помощь студентам 6 10.10.2010 15:22
goto Serg12 Помощь студентам 12 14.06.2010 17:31
goto gagen Общие вопросы C/C++ 18 05.04.2010 13:24
GoTo Diego__ Microsoft Office Word 3 13.03.2010 19:55