Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.06.01;
Скачать: CL | DM;

Вниз

Вот как надо на си шарп писать   Найти похожие ветки 

 
TUser ©   (2008-04-17 08:03) [40]

> kaif ©   (17.04.08 02:54) [38]

Все верно. Но. Задачи бывают разные. Программы бывают разные. Кусочки у этих программ бывают разные. Бывает, что где-то важна скорость, использование памяти или что-то еще. Тогда мы напишем оптимально. Мы, ежели надо, ассемблер выучим. А бывает, что важнее другое - например, скорость написания кода или его читабельность. Бывает, что соображения типа "оптимальность алгоритма" идут лесом.

Сабж приведен без контекста, в котором он использован. А без контекста понять, нормально это или нет, - нельзя. Я бы сам скорее написал что-нибудь вроде for "0".."9" do MyStr := StringReplace (), а не сабж, но буфер дополнительный у меня тоже бы аллокировался.

Что касается подобных проблем, то существуют языки, где такие дела вообще никак нельзя контролировать - от жавыскрипта до питона со всеми остановками. У этих языков есть своя ниша, где они востребованы.


 
TUser ©   (2008-04-17 08:03) [41]

> kaif ©   (17.04.08 02:54) [38]

Все верно. Но. Задачи бывают разные. Программы бывают разные. Кусочки у этих программ бывают разные. Бывает, что где-то важна скорость, использование памяти или что-то еще. Тогда мы напишем оптимально. Мы, ежели надо, ассемблер выучим. А бывает, что важнее другое - например, скорость написания кода или его читабельность. Бывает, что соображения типа "оптимальность алгоритма" идут лесом.

Сабж приведен без контекста, в котором он использован. А без контекста понять, нормально это или нет, - нельзя. Я бы сам скорее написал что-нибудь вроде for "0".."9" do MyStr := StringReplace (), а не сабж, но буфер дополнительный у меня тоже бы аллокировался.

Что касается подобных проблем, то существуют языки, где такие дела вообще никак нельзя контролировать - от жавыскрипта до питона со всеми остановками. У этих языков есть своя ниша, где они востребованы.


 
ferr   (2008-04-17 10:55) [42]

дет сад..
> [38] kaif ©   (17.04.08 02:54)
никогда не смотрите на функциональные языки, обычно там всё так неоптимально.. так неоптимально..

а если уж по сабжу то для меня вариант один, примерно так : return new Regex(@"^\d+$").IsMatch(s);


 
Дмитрий С   (2008-04-17 16:53) [43]


> а если уж по сабжу то для меня вариант один, примерно так
> : return new Regex(@"^\d+$").IsMatch(s);

А так по идее быстрее будет =)
return ! (new Regex(@"[^\d]").IsMatch(s));


 
TUser ©   (2008-04-17 17:30) [44]

Только не доказвайте, что это - понятнее.


 
Polevi   (2008-04-17 17:55) [45]

это смотря кто смотрит


 
Mystic ©   (2008-04-17 21:03) [46]


> Вместо этого, ИМХО, нормальный программист, близкий так
> сказать "к железу" (скажем, дельфист) предпочтет заменить
> символы цифр на символ пробела (пусть даже он бы воспользовался
> подобной идеей, находя ее "красивой"), а затем применение
> однократной функции типа Trim(). Тогда все можно будет реализовать
> в одном буфере и не аллокировать 10 раз новую память.


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

Кстати, метод int.parse не эквивалентен данному. Ибо в строке может быть штрихкод из 20 символов, что не поместится в int. Regex тоже не оптимальный вариант, потому что каждый раз будет выполняться построение конечного автомата для разбора регулярного выражения.


 
palva ©   (2008-04-17 21:11) [47]


> Ничего не даст.

Ну да, не даст. Для замысловатых модификаций строк есть специальный тип StringBuilder.
Но в данной задаче модификаций, естественно, не требуется.


 
DiamondShark ©   (2008-04-17 21:18) [48]


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

это если писать return new Regex(@"^\d+$").IsMatch(s);

А если объект создать один раз, да ещё с опцией компиляции, то нормально.


 
Поп Гапон   (2008-04-17 23:31) [49]


> tesseract ©   (16.04.08 11:51) [5]
>
>
> > Ega23 ©   (16.04.08 11:47) [4]
>
>
> Мдя... С++ -ую логику не отнимешь. На тебе 1с-вский , от
> франчей достался:


Ммм... во франчи что ли пойти. Им на 8.* больше чем делфистам и сишникам раза в два в Киеве платят.


 
Поп Гапон   (2008-04-17 23:35) [50]

База была на Access где было 60 полей в строке Fax1,Fax2...Fax60 ну и подобные маразмы


function TTemplateHelper.CreateOtherContacts(ADOQuery: TADOQuery): WideString;
const
 cFaxName = "Fax";

 cPhoneContactString =
 "<ParaStyle:Txt\_tel><CharStyle:Txt\_ram>$#$Type$#$ ............................................................................<Cha rStyle:><ParaStyle:Txt\_tel><CharStyle:Tel\_ram> $#$Value$#$<CharStyle:>"+ #13 + #10;
 cPhoneWithCodeContactString =
 "<ParaStyle:Txt\_tel><CharStyle:Txt\_ram>$#$Type$#$ ....................................................................<CharStyle:> <ParaStyle:Txt\_tel><CharStyle:Tel\_ram> $#$Value$#$<CharStyle:>"+ #13 + #10;

 cMobileContactString =
 "<ParaStyle:Txt\_tel><CharStyle:Txt\_ram>$#$Type$#$ ........................................................<CharStyle:><ParaStyle:T xt\_tel><CharStyle:Tel\_ram> $#$Value$#$<CharStyle:>"+ #13 + #10;

 cICQContactString = "<ParaStyle:Txt\_tel><CharStyle:Txt\_ram>$#$Type$#$ ............................................................................<Cha rStyle:><ParaStyle:Txt\_tel><CharStyle:Tel\_ram> $#$Value$#$<CharStyle:>"+ #13 + #10;

 cFaxContactString =
 "<ParaStyle:Txt\_tel><CharStyle:Txt\_ram>$#$Type$#$ ..................................................................<CharStyle:><P araStyle:Txt\_tel><CharStyle:Tel\_ram> $#$Value$#$<CharStyle:>"+ #13 + #10;
 cFaxWithCodeContactString =
 "<ParaStyle:Txt\_tel><CharStyle:Txt\_ram>$#$Type$#$ ..........................................................<CharStyle:><ParaStyle :Txt\_tel><CharStyle:Tel\_ram> $#$Value$#$<CharStyle:>"+ #13 + #10;
var
 FaxCount: integer;
 Fax1, Fax2: WideString;
 lResStr: WideString;
 lPhoneCode: WideString;
 lCode, lNumber: WideString;
begin

 Result := "";
 //
 FaxCount := 0;
 while True do
   begin
     Fax1 := GetItemForReplace(ADOQuery, cFaxName + IntToStr(FaxCount + 1));
     Fax2 := GetItemForReplace(ADOQuery, cFaxName + IntToStr(FaxCount + 2));
     //увеличиваем
     inc(FaxCount, 2);

     //проверяем значения и распихиваем по шаблону
     if Trim(Fax1) = "" then Break;

     //получаем телефонный код города
     lPhoneCode := GetPhoneCode;

     //парсим на код и телефон
     ParsePhoneNumber(Fax2, lCode, lNumber);
     if lCode <> "" then
       begin
         lPhoneCode := lCode;
         Fax2 := lNumber;
       end;

     //по умолчанию
     lResStr := cPhoneContactString;
     //иначе производим проверки
     if CheckForICQ(Fax1) then
       begin
         Fax2 := ICQSpaced(Fax2);
         lResStr := cICQContactString;
       end;
     if CheckForMobile(Fax1) then
       begin
         Fax1 := "Моб_льний";
         lResStr := cMobileContactString;
       end;
     //телефон с учетом кода города
     if CheckForPhone(Fax1) then
       begin
         if (lPhoneCode <> "") then
           lResStr := cPhoneWithCodeContactString
         else
           lResStr := cPhoneContactString;
       end;
     //Факс с учетом кода города
     if CheckForFax(Fax1) then
       begin
         Fax1 := "Тел. /факс";
         if (lPhoneCode <> "") then
           lResStr := cFaxWithCodeContactString
         else
           lResStr := cFaxContactString;
       end;

     //если не ICQ то добавляем код города
     if (lPhoneCode <> "") and (not CheckForICQ(Fax1)) then
       Fax2 := lPhoneCode + " " + PhoneSpaced(Fax2);
     //иначе просто форматируем телефон
     if (lPhoneCode = "") and (not CheckForICQ(Fax1)) then
       Fax2 := PhoneSpaced(Fax2);

     //подставляем
     lResStr := Tnt_WideStringReplace(lResStr, "$#$Type$#$",Fax1, [rfReplaceAll, rfIgnoreCase]);
     lResStr := Tnt_WideStringReplace(lResStr, "$#$Value$#$",Fax2, [rfReplaceAll, rfIgnoreCase]);
     Result := Result + lResStr;
   end;
end;


 
Real ©   (2008-04-18 04:01) [51]


> Мдя... С++ -ую логику не отнимешь. На тебе 1с-вский , от
> франчей достался:

Пипец, и это считается нормальным со стороны 1С? Или это пример стеба?



Страницы: 1 2 вся ветка

Текущий архив: 2008.06.01;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.021 c
15-1208258400
ламо777
2008-04-15 15:20
2008.06.01
Производительность на удаленном сервере


15-1208648573
TIF
2008-04-20 03:42
2008.06.01
Переустановить IE7 в Vista. КАК?


4-1189725560
Andrey_rus
2007-09-14 03:19
2008.06.01
Событие перехода питания на аккумулятор


15-1207051996
Ega23
2008-04-01 16:13
2008.06.01
Теперь уже без дураков - ММП 11.04 ?


8-1181319356
ЮРЕЦ
2007-06-08 20:15
2008.06.01
image и paintbox