1. C# / Говнокод #5417

    +116

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    var sEmailRecipient = string.Empty;
    
                        string m_sPhysicalPath = "";
                        if (SaveType == "both" || SaveType == "email")
                        {
                            
                            List<User> recipients = null;
                            if (RecipentSelectMode == "auto")
                            {
                                if (!string.IsNullOrEmpty(AutoRecipient))
                                    recipients = Notification.ConvertToUsers(AutoRecipient, MethodologyId, CurrentObjectId, CurrentUserId, CurrentEntityName);
                            }
                            if(RecipentSelectMode == "manual"){
                                if (Recipient != null)
                                    sEmailRecipient = EvaluateExpression(CurrentUserId, MethodologyId, MainEntityName, MainObjectId, Recipient);
                            }
                            
                             m_sPhysicalPath = Document.AbsoluteApplicationPath + "/" + p_sReportPath.Substring(p_sReportPath.LastIndexOf("storage"));
    
                             if (RecipentSelectMode == "auto")
                             {
                                 foreach (User user in recipients)
                                 {
                                     if (Regex.IsMatch(user.Email, @"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*", RegexOptions.None))
                                     {
                                         SendReportByEmail(m_sPhysicalPath, user);
                                     }
                                 }
                             }
                             if (RecipentSelectMode == "manual")
                             {
                                 if (Regex.IsMatch(Recipient, @"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*", RegexOptions.None))
                                 {
                                     SendReportByEmail(m_sPhysicalPath, new User { Email = sEmailRecipient });
    
                                 }
                                 else
                                 {
                                     return CreateResult(GetClientData(), "Email message sending failed - incorrect email address - " + Recipient, (int)ReportRenderingFailType.Success);
    
                                 }
                        
                             }
    
                        }
                        if (SaveType == "email")
                        {
                            FileInfo file = new FileInfo(m_sPhysicalPath);
                            if (file.Exists)
                                file.Delete();
                        }

    Отправляет отчет по email

    Запостил: PetrLyapin, 27 Января 2011

    Комментарии (44) RSS

    • Особенно в таком варианте удивляет безапелационное следование правилам венгерской нотации, в то время как пустая строка то String.Empty то "" :) А проверка эл. почты регулярными выражениями это уже как яйцо в микроволновке.
      Ответить
      • знаешь другие способы проверки?
        Ответить
        • Я думал это уже своего рода мем... http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html вот собственно практически полная валидация эл. адреса регулярным выражением. А вообще, чтобы не писать такие заумные конструкции, нужно, ну как минимум разбить сначала на две части - до и после @, и их уже проверять.
          Ответить
          • лучше 1 раз напряч мозг чем каждый раз напрягать процессор лишним действием
            это один из примеров того, почему потребности софта с каждым годом растут: програмистам лень думать, мол планка памяти стоит на дешевле чем час работы хорошего программиста
            Ответить
          • http://www.regular-expressions.info/email.html
            Ответить
            • Да-да, вот потому что есть такие разработчики, которые вместо того, чтобы прочитать документацию выхватывают первую попавшуюся ссылку в гугле и копируют из нее код в свой проект, и имеем "програмы построенные как пирамиды - без плана и идеи, просто грубой силой сотен тысячь рабов".
              Вы RFC откройте да прочитайте - выражение по ссылке проверяет что-то только отдаленно похожее на e-mail.
              Ответить
            • какой позор.
              Ответить
        • try {
           new MailAddress(address); 
          } catch (....)
          Ответить
        • Обычно, если есть способ отправить электронную почту, то есть и способ проверить, является ли строка адресом.
          Ответить
          • не просто отправить, но и принять ответ
            есть один способ проверить почту:
            послать письмо и попросить кликнуть на линк
            Ответить
            • между прочим, довольно популярный способ.
              Ответить
              • единственно возможный)
                списка всех существующих емейлов к сожалению не сущестует
                Ответить
            • Это другая проверка -- что адрес существует, письма до него доходят и адресат действительно желает использовать этот адрес.

              Но перед отправкой стоит провести и более лёгкую проверку. Что вы и продемонстрировали выше.
              Ответить
    • за венгерскую нотацию в 2011 году надо голову пробивать
      Ответить
      • в динамических языках иногда полезно
        Ответить
        • голову пробивать?
          Ответить
          • когда тип переменной не определен, так хоть венгерка поможет
            Ответить
            • Лучше, конечно, болгарка, чем венгерка. Но это я всё про голову :)
              Ответить
              • программист должен понимать что делает, и делал несколько месяцев назад
                Ответить
        • Динамические языки не нужны.
          Ответить
          • Т.е. ты хочешь сказать, что такие языки как PHP и JavaScript, на которых написана значительная часть сущетсвующих на данный момент сайтов, они "не нужны"? =))))))))))))))
            Ответить
            • да, они действительно не нужны.
              Ответить
            • такие сайты не нужны.
              Ответить
              • а какие нужны ? с ASP и Flash ?
                Ответить
                • > Flash
                  meh. это же почти проприетарное похапе!
                  Ответить
                  • Вы так и не ответили.
                    Ответить
                    • Вы путаете бэкент и фронт энд
                      и причем тут асп? на нем уже никто не пишет почти (к счастю)
                      если речь об асп.нет -- то да
                      на нем сайты лучше, конечно если они хотябы на mvc.net
                      Ответить
                      • Почему путаю ? Было сказано про "PHP и JavaScript". Первое - серверное исполнение, второе - клиентское.
                        ASP (пусть будет .Net) - серверное, Flash - клиентское. Или вы о чем-то другом ?
                        Ответить
                        • а, понял Вас)

                          мне жаль, что самыми популярными языками стали самые плохие

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

                          а в мире пхп до сих пор борюца с скл инъекциями, не понимают смысла ооп, и вообще находятся на уровне домашних программистов каменного века.

                          мир не идеален.
                          Ответить
            • А есть еще Lisp, Bash, Python, Lua... они тоже не нужны? Или имелась в виду динамическая типизация? В моем понимании, скриптовые языки хороши тем, что не нужно в системе реализовывать весь возможный функционал, а можно оставить пользователю скрипт, который этот "недостающий" функционал реализует. Но когда это перерастает в написание програм на скриптовых языках - это дико и, в первую очередь, не удобно. Т.е. "фреймворк" написаный на PHP поражает грандиозностю и бесполезностью задумки...

              ЗЫ. Обидно, что акцент сместился с того, ради чего этот код сюда запостили на банальные вещи.
              Ответить
        • не спорю
          но речь то идет о C# и крайне выборочном использовании
          за использование МногоРазныхСтилей-в-1-классе - голову пробивать надо точно
          Ответить
          • с таким уточнением соглашусь, особенно с
            > за использование МногоРазныхСтилей-в-1-классе - голову пробивать надо точно
            Ответить
      • Обоснуйте.
        Ответить
        • венгерская нотация нужна для языков только с глобальным неймспейсом
          Ответить
          • ну а при чем тут неймспейс?
            Ответить
            • а, да. вру.
              для языков которые не различают регистр (int x (поле) и int X (свойство))
              поэтому ввели m_x
              не?
              Ответить
              • не.
                для языков, где были структуры, но не было классов, что бы помечать "область видимости" - что можно трогать извне, а за что отрывать руки.
                для языков, где локальные переменные в методах прятали поля (x=0; - переменная или поле?)
                Ответить

    Добавить комментарий