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

    +1

    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
    var vals =
                            tagsTypes.Zip(times,
                                (tagType, time) =>
                                {
                                    if (error != null)
                                        return new { time = time, val = (object)ServiceValue.DataSourceNotAvailable };
                                    if (!timedVals.ContainsKey(tagType.tag))
                                        return new { time = time, val = (object)ServiceValue.NoValue };
                                    if (timedVals[tagType.tag].Count == 0)
                                        return new { time = time, val = (object)ServiceValue.NoValue };
                                    var value = timedVals[tagType.tag].Find(x => x.TimestampUTC == time.ToUniversalTime() && x.Value!=null);
                                    if (value != null && value.IsGood())
                                    {
                                        if (value.Value == null)
                                            return new { time = time, val = (object)ServiceValue.Error };
                                        else
                                        {
                                            if (!string.IsNullOrEmpty(value.DigitalSetValue))
                                                return new { time = time, val = (object)value.DigitalSetValue };
                                            return new { time = time, val = value.Value };
                                        }
                                    }
                                    else
                                    {
                                        var val = _connection.GetTagByName(tagType.tag).Data.ArcValue(time, RetrievalTypeConstants.rtAuto);
                                        if (!string.IsNullOrEmpty(val.DigitalSetValue))
                                            return new { time = time, val = (object)val.DigitalSetValue };
                                        return new { time = time, val = val.Value };
                                    }
                                        return new { time = time, val = (object)ServiceValue.Error };                            
    
                                }).ToArray();

    давайте ка рассортируем значения по аттрибутам

    gogolevsergey, 23 Августа 2017

    Комментарии (1)
  2. C# / Говнокод #23277

    0

    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
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    public static int index(string word, char comp)
            {
                int k = -1;
                for (int i = 0; i < word.Length; i++)
                    if (word[i] == comp)
                    {
                        k = i;
                        break;
                    }
                return k;
            }
    
            public static char[] strtocharr(string str)
            {
                char[] tmp = new char[str.Length];
                for (int i = 0; i < tmp.Length; i++)
                    tmp[i] = str[i];
                return tmp;
            }
    
            public static string charrtostr(char[] charr)
            {
                string tmp = null;
                for (int i = 0; i < charr.Length; i++)
                    tmp = String.Format("{0}{1}", tmp, charr[i]);
                return tmp;
            }
    
            public static char maskfromword(string word)
            {
                return word[word.Length - 1];
            }
    
            public static string maskfromword(string word, int n)
            {
                string mask = null;
                for (int i = 0; i < n; i++)
                    mask = String.Format("{0}{1}", mask, word[word.Length - 1]);
                return mask;
            }
    
            public static char Counter(char crnt, string word)
            {
                if (crnt != maskfromword(word))
                    crnt = word[index(word, crnt) + 1];
                else
                    crnt = word[0];
                return crnt;
            }
    
            public static string Counter(string prev, string word, int k)
            {
                char[] tmp = strtocharr(prev);
                if (k >= prev.Length - 1)
                    k = prev.Length - 1;
                else
                    for (int i = k + 1; i < prev.Length; i++)
                        tmp[i] = word[0];
                if (tmp[k] == maskfromword(word))
                    return MultiCounter(prev, word, k - 1);
                else
                    tmp[k] = Counter(tmp[k], word);
                return charrtostr(tmp);
            }

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

    Vero92, 18 Августа 2017

    Комментарии (36)
  3. C# / Говнокод #23255

    +3

    1. 1
    2. 2
    public bool Success { get; set; }
            public bool Failure { get { return !Success; } set { Success = !value; } }

    И не поспоришь!

    pipjaka, 10 Августа 2017

    Комментарии (0)
  4. C# / Говнокод #23251

    −2

    1. 1
    labelViewData.CreateTextPainterAccordingAllowedBoundsForLabels

    По Макконнеллу. Название метода должно отражать всю его суть и даже немножко деталей реализации. Ну как немножко, почти все.

    Ekze, 09 Августа 2017

    Комментарии (3)
  5. C# / Говнокод #23243

    0

    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
    internal static object CreateDefaultEqualityComparer(Type type)
            {
                Debug.Assert(type != null && type is RuntimeType);
    
                object result = null;
                var runtimeType = (RuntimeType)type;
    
                // Specialize for byte so Array.IndexOf is faster.
                if (type == typeof(byte))
                {
                    result = new ByteEqualityComparer();
                }
                // If T implements IEquatable<T> return a GenericEqualityComparer<T>
                else if (typeof(IEquatable<>).MakeGenericType(type).IsAssignableFrom(type))
                {
                    result = CreateInstanceForAnotherGenericParameter((RuntimeType)typeof(GenericEqualityComparer<int>), runtimeType);
                }
                // Nullable does not implement IEquatable<T?> directly because that would add an extra interface call per comparison.
                // Instead, it relies on EqualityComparer<T?>.Default to specialize for nullables and do the lifted comparisons if T implements IEquatable.
                else if (type.IsGenericType)
                {
                    if (type.GetGenericTypeDefinition() == typeof(Nullable<>))
                    {
                        result = TryCreateNullableEqualityComparer(runtimeType);
                    }
                }
                // The equality comparer for enums is specialized to avoid boxing.
                else if (type.IsEnum)
                {
                    result = TryCreateEnumEqualityComparer(runtimeType);
                }
                
                return result ?? CreateInstanceForAnotherGenericParameter((RuntimeType)typeof(ObjectEqualityComparer<object>), runtimeType);
            }

    Код взят из CoreCLR mscorlib сырцов.

    Внимание вопрос. Нахерна было писать эту обосгость когда данный метод легко делается генериком без какого либо вызова "невидимого" кода?

    вот пример как все должно было быть

    ```
    internal static object CreateDefaultEqualityComparer<T>()
    {
    // Specialize for byte so Array.IndexOf is faster.
    if (typeof(T) == typeof(byte))
    {
    result = new ByteEqualityComparer();
    }
    // If T implements IEquatable<T> return a GenericEqualityComparer<T>
    else if (typeof(IEquatable<T>).IsAssignableFrom( typeof(T)))
    {
    result new GenericEqualityComparer<T>();
    }
    // Nullable does not implement IEquatable<T?> directly because that would add an extra interface call per comparison.
    // Instead, it relies on EqualityComparer<T?>.Default to specialize for nullables and do the lifted comparisons if T implements IEquatable.
    else if (typeof(T).IsGenericType)
    {
    if (typeof(T).GetGenericTypeDefinition() == typeof(Nullable<>))
    {
    result = new NullableEqualityComparer<T>();
    }
    }
    // The equality comparer for enums is specialized to avoid boxing.
    else if (typeof(T).IsEnum)
    {
    result = TryCreateEnumEqualityComparer<T>();
    }

    return result ?? new ObjectEqualityComparer<T>();
    }
    ```

    ASD_77, 07 Августа 2017

    Комментарии (10)
  6. C# / Говнокод #23239

    −1

    1. 1
    2. 2
    3. 3
    4. 4
    internal static object CopyImmutableSortedDictionary<K, V>(object original, ICopyContext context)
    {
                return original;
    }

    Microsoft Orleans https://github.com/dotnet/orleans

    Копирование объекта в 2к17

    ClockworkAlex, 04 Августа 2017

    Комментарии (5)
  7. C# / Говнокод #23238

    0

    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
    public void GetMapping(DbObject obj, IEnumerable<DbObject> map = null, params string[] additional)
    {
        Mapper m = Mapper.Get(obj.DialectType);
        switch (m.MapperType)
        {
            case MapperType.SST:
                m.Initialize(null, additional);
                break;
            case MapperType.SSM:
                m.Initialize(null, additional);
                break;
            default:
                throw new ArgumentException();
        }
        // применение: этот метод возвращает List<Tupple<DbObject, DbObject>>
        m.GetMappingByDialect(obj, map);
    }
    
    public enum MapperType
    {
        SST,
        SSM,
    }

    Во-вторник - этот код, выбил меня из рабочего процесса на весь день ...

    spyrytus, 04 Августа 2017

    Комментарии (0)
  8. C# / Говнокод #23191

    0

    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
    private void button1_Click(object sender, EventArgs e)
            {
                short number = 34;
                folderBrowserDialog1.ShowDialog();
           //fileListBox1.FileName = folderBrowserDialog1.SelectedPath;
    
                DirectoryInfo myFolder = new DirectoryInfo(folderBrowserDialog1.SelectedPath);
    
                foreach (FileInfo T in myFolder.GetFiles())
                {
                    number++;
                    string filename = T.Name;
                    File.Move(folderBrowserDialog1.SelectedPath + "" + filename, folderBrowserDialog1.SelectedPath + "" + number.ToString());
                }
            }
        }
    }

    Решил я тут старые проекты копнуть...

    caffeinemania, 17 Июля 2017

    Комментарии (2)
  9. C# / Говнокод #23184

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    public bool CheckBool(string value)
           {
               value = value.ToLower();
               return !string.IsNullOrEmpty(value) && (value == "on" || value == "yes" || value == "1") ? true : false;
           }

    another variant ;D

    selicate, 14 Июля 2017

    Комментарии (4)
  10. C# / Говнокод #23183

    −1

    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
    static string[] nums = new string[60] {
                "00", "01", "02", "03", "04", "05", "06", "07", "08", "09",
                "10", "11", "12", "13", "14", "15", "16", "17", "18", "19",
                "20", "21", "22", "23", "24", "25", "26", "27", "28", "29",
                "30", "31", "32", "33", "34", "35", "36", "37", "38", "39",
                "40", "41", "42", "43", "44", "45", "46", "47", "48", "49",
                "50", "51", "52", "53", "54", "55", "56", "57", "58", "59"
            };
    
            /// <summary>
            /// Форматирует дату в dd.MM.yyyy
            /// </summary>
            /// <param name="date"></param>
            /// <returns></returns>
            public static string ShortRuDateStr(ref DateTime date)
            {
                return string.Concat(nums[date.Day], ".", nums[date.Month], ".", YearToString(date.Year));
            }
    
    
            /// <summary>
            /// Возвращает текущую дату в формате yyyyMMddHHmmss
            /// </summary>
            /// <returns></returns>
            public static string Timestamp(ref DateTime date)
            {
                return string.Concat(YearToString(date.Year), nums[date.Month], nums[date.Day], nums[date.Hour], nums[date.Minute], nums[date.Second]);
            }
    
            public static string YearToString(int year)
            {
                return year.ToString().PadLeft(4, '0');
            }

    michael443959, 13 Июля 2017

    Комментарии (20)