Об именах методов
От: Spiceman  
Дата: 02.07.10 08:47
Оценка:
Столкнулся тут с проблемой придумать имя методу.
Есть некий метод

public string GetString(string str)
{
  // Тут некое преобразование строки str.
  str = str.Replace(";", ",");
  // Тут еще некие манипуляции над str и возврат новой строки.
}


Дело в том, что метод используется в куче мест с 2004 года. И никто не помнит зачем сделана замена ; на ,. А сейчас понадобилось делать все тоже, что и в этом методе, но без такой замены. Решил сделать копию метода и убрать оттуда эту замену. Но вот вопрос, как назвать новый метод? По идее замена там скорее всего изначально была не нужна, но убирать в исходном месте очень опасно, так как может выстрелить в непредсказуемом месте.
PS. Пока остановился на названии GetString1
Re: Об именах методов
От: LF  
Дата: 02.07.10 08:52
Оценка: +1
public string GetString(string str, bool needReplace)
{
  // Тут некое преобразование строки str.
  if (needReplace)
    str = str.Replace(";", ",");
  // Тут еще некие манипуляции над str и возврат новой строки.
}


и ничего копировать не надо и называть тоже
Re: Об именах методов
От: SchweinDeBurg Россия http://zarezky.spb.ru/
Дата: 02.07.10 08:52
Оценка:
Здравствуйте, Spiceman, Вы писали:

S>PS. Пока остановился на названии GetString1


ИМХО тогда уже лучше GetStringEx(). Ну, а если по уму, то я бы GetString() переименовал в GetStringWithReplace(), а новый бы назвал освободившимся GetString().
[ posted via RSDN@Home 1.1.4 stable SR1 r568, accompanied by silence ]
- Искренне ваш, Поросенок Пафнутий ~ ICQ#116846877
In Windows, there’s always a catch… © Paul DiLascia
Re[2]: Об именах методов
От: SchweinDeBurg Россия http://zarezky.spb.ru/
Дата: 02.07.10 08:53
Оценка:
Здравствуйте, LF, Вы писали:

LF>
LF>public string GetString(string str, bool needReplace)
LF>


А C# поддерживает значения по умоланию для параметров?
[ posted via RSDN@Home 1.1.4 stable SR1 r568, accompanied by silence ]
- Искренне ваш, Поросенок Пафнутий ~ ICQ#116846877
In Windows, there’s always a catch… © Paul DiLascia
Re: Об именах методов
От: Sshur Россия http://shurygin-sergey.livejournal.com
Дата: 02.07.10 08:55
Оценка:
Здравствуйте, Spiceman, Вы писали:


S>PS. Пока остановился на названии GetString1



И еще через N лет кто-то другой будет задаваться тем же вопросом, зачем два почти одинаковых метода GetString и GetString1.

Мое имхо надо копать зачем эта замена и давать адекватное название и для GetString и для GetString1
Шурыгин Сергей

"Не следует преумножать сущности сверх необходимости" (с) Оккам
Re: Об именах методов
От: Temoto  
Дата: 02.07.10 08:55
Оценка: 6 (1)
S>Столкнулся тут с проблемой придумать имя методу.
S>Есть некий метод

S>
S>public string GetString(string str)
S>{
S>  // Тут некое преобразование строки str.
S>  str = str.Replace(";", ",");
S>  // Тут еще некие манипуляции над str и возврат новой строки.
S>}
S>


S>Дело в том, что метод используется в куче мест с 2004 года. И никто не помнит зачем сделана замена ; на ,. А сейчас понадобилось делать все тоже, что и в этом методе, но без такой замены. Решил сделать копию метода и убрать оттуда эту замену. Но вот вопрос, как назвать новый метод? По идее замена там скорее всего изначально была не нужна, но убирать в исходном месте очень опасно, так как может выстрелить в непредсказуемом месте.


Как это в непредсказуемом? Разве нельзя найти все использования этого метода?

S>PS. Пока остановился на названии GetString1


Стиль сохранён. Хороший вариант.
Re: Об именах методов
От: Lloyd Россия  
Дата: 02.07.10 08:56
Оценка:
Здравствуйте, Spiceman, Вы писали:

S>Дело в том, что метод используется в куче мест с 2004 года. И никто не помнит зачем сделана замена ; на ,. А сейчас понадобилось делать все тоже, что и в этом методе, но без такой замены. Решил сделать копию метода и убрать оттуда эту замену. Но вот вопрос, как назвать новый метод?


А в чем смысл такой замены?
Re[3]: Об именах методов
От: LF  
Дата: 02.07.10 08:56
Оценка:
SDB>А C# поддерживает значения по умоланию для параметров?
С#4 да, для ранних версий можно сделать явную перегрузку.
Re[3]: Об именах методов
От: Sshur Россия http://shurygin-sergey.livejournal.com
Дата: 02.07.10 08:58
Оценка:
Здравствуйте, SchweinDeBurg, Вы писали:

SDB>А C# поддерживает значения по умоланию для параметров?


Это серьезный вопрос? Если серьезный, то поддерживает через перегрузку

public string GetString(string str, bool needReplace)
{
   return GetString(str,false);
}


public string GetString(string str, bool needReplace)
{
//нормальный метод

}
Шурыгин Сергей

"Не следует преумножать сущности сверх необходимости" (с) Оккам
Re: Об именах методов
От: 0x7be СССР  
Дата: 02.07.10 09:03
Оценка:
Здравствуйте, Spiceman, Вы писали:


S>Решил сделать копию метода и убрать оттуда эту замену.

У нас за такое по голове бьют больно-больно
Re[4]: Об именах методов
От: SchweinDeBurg Россия http://zarezky.spb.ru/
Дата: 02.07.10 09:03
Оценка:
Здравствуйте, LF, Вы писали:

LF>С#4 да, для ранних версий можно сделать явную перегрузку.


Однако... век живи — век учись...
[ posted via RSDN@Home 1.1.4 stable SR1 r568, accompanied by silence ]
- Искренне ваш, Поросенок Пафнутий ~ ICQ#116846877
In Windows, there’s always a catch… © Paul DiLascia
Re[4]: Об именах методов
От: SchweinDeBurg Россия http://zarezky.spb.ru/
Дата: 02.07.10 09:03
Оценка:
Здравствуйте, Sshur, Вы писали:

S>Это серьезный вопрос?


Абсолютно. Я закоренелый плюсовик, разве что Фртран/Алгол/Паскаль еще немного помню.

S>Если серьезный, то поддерживает через перегрузку


S>
S>public string GetString(string str, bool needReplace)

S>public string GetString(string str, bool needReplace)
S>


Выделенное наверно лишнее все-таки? А то как-то я перегрузки не наблюдаю. Впрочем, это оффтоп уже, сам в маны гляну на досуге.
[ posted via RSDN@Home 1.1.4 stable SR1 r568, accompanied by silence ]
- Искренне ваш, Поросенок Пафнутий ~ ICQ#116846877
In Windows, there’s always a catch… © Paul DiLascia
Re: Об именах методов
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 02.07.10 09:07
Оценка: :)
Здравствуйте, Spiceman, Вы писали:

S>PS. Пока остановился на названии GetString1


(1) варианты GetStringForFucking, GetFuckingString (в зависимости от того, где будет использоваться строка).
(2) Если строка будет использована в нескольких местах, то лучшее ее как-то обозвать, ну и будет GetDNAString или как придумаешь
(3) Можно использовать дополнительный параметр по умолчанию (или перегрузку): GetString(string str, bool fuckingFormat), но тут надо помнить, что если fuckingFormat будет усиленно развиваться и меняться, то можно будет утонуть во всех этих флажках и условиях.
Re[5]: Об именах методов
От: Sshur Россия http://shurygin-sergey.livejournal.com
Дата: 02.07.10 09:27
Оценка:
Здравствуйте, SchweinDeBurg, Вы писали:


S>>Если серьезный, то поддерживает через перегрузку



SDB>Выделенное наверно лишнее все-таки? А то как-то я перегрузки не наблюдаю. Впрочем, это оффтоп уже, сам в маны гляну на досуге.


Да, конечно, сорри за опечатку. Надо так

public string GetString(string str)

public string GetString(string str, bool needReplace)
Шурыгин Сергей

"Не следует преумножать сущности сверх необходимости" (с) Оккам
Re: Об именах методов
От: jazzer Россия Skype: enerjazzer
Дата: 02.07.10 09:37
Оценка: 1 (1) +1 :))) :)
Здравствуйте, Spiceman, Вы писали:


S>Столкнулся тут с проблемой придумать имя методу.


Вариантов много:
HappyDebugging
HappyMaintaining
HappySearching
BreatheDeepAndStayCalm
f (это вообще очень хорошее имя для подобной функции)
...

jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[2]: Об именах методов
От: Spiceman  
Дата: 02.07.10 10:18
Оценка:
Здравствуйте, Temoto, Вы писали:

S>>По идее замена там скорее всего изначально была не нужна, но убирать в исходном месте очень опасно, так как может выстрелить в непредсказуемом месте.

T>Как это в непредсказуемом? Разве нельзя найти все использования этого метода?

По месту использования ничего сказать нельзя, так как отформатированная строка возвращается наружу и используется уже в другой системе. А они могли уже зашиться, что приходить будет ",", а не ";".

S>>PS. Пока остановился на названии GetString1

T>Стиль сохранён. Хороший вариант.

Ну дык Есть опыт написания кода для Индии
Re: Об именах методов
От: Spiceman  
Дата: 02.07.10 10:20
Оценка:
Здравствуйте, Spiceman, Вы писали:

Всем спасибо. Больше всего понравилось название GetFuckingString.

А вообще как вы в таких случаях поступаете? В книгах по кодированию, рефакторингу и прочих написаны достаточно тривиальные вещи, которые и так понятны. Типа название надо давать говорящее и не длинное, а если не получается, значит надо разбивать функцию на части.
А здесь legacy code который уже 6 лет на продуктиве. И единственный вариант — продублировать код.
Re[3]: Об именах методов
От: Spiceman  
Дата: 02.07.10 10:22
Оценка:
Здравствуйте, SchweinDeBurg, Вы писали:

SDB>А C# поддерживает значения по умоланию для параметров?


На самом деле у меня проще — у меня VB, который поддерживает такие параметры Это я пример на C# привел.
Re: Об именах методов
От: minorlogic Украина  
Дата: 03.07.10 07:46
Оценка:
Здравствуйте, Spiceman, Вы писали:

public string GetString(string str)


Интересная практика. Пробую применить дальше и получаю набор функций

public int GetInt(int i)
public double GetDouble(double d)


Реально нравится ?
... << RSDN@Home 1.2.0 alpha 4 rev. 1237>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[2]: Об именах методов
От: Spiceman  
Дата: 03.07.10 19:44
Оценка:
Здравствуйте, minorlogic, Вы писали:

M>
M>public string GetString(string str)
M>


M>Интересная практика. Пробую применить дальше и получаю набор функций


M>
M>public int GetInt(int i)
M>public double GetDouble(double d)
M>


M>Реально нравится ?


Придираетесь к словам? Каюсь, не точно написал название функции в первом сообщении. Но на суть это не влияет. Нужно было написать GetXxxString, где Xxx примерно описывает, какую именно строку нужно получить. Вопрос был в том, как назвать новую функцию, которая является точной копией первой за исключением одной строки кода.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.