Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2008.06.01;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.55 MB
Время: 0.052 c
15-1208483714
Slider007
2008-04-18 05:55
2008.06.01
С днем рождения ! 18 апреля 2008 пятница


3-1197633374
Девушка
2007-12-14 14:56
2008.06.01
управление доступом к файлам на сервере посредством бд -клиента


15-1208514276
Вопрос
2008-04-18 14:24
2008.06.01
Как вам картинка ? 3dsmax.


15-1207899362
IGray
2008-04-11 11:36
2008.06.01
Что с TORRY.NET ?


15-1208497739
Дмитрий С
2008-04-18 09:48
2008.06.01
Большой ресурс. Правильно ли?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский