1. Список говнокодов пользователя PolinaAksenova

    Всего: 18

  2. C++ / Говнокод #27424

    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
    struct X {
        int x;
        int y;
    
        X(int y_) :
            y(y_),
            x(y + 10)
        {
        }
    };
    
    int main()
    {
        X foo = X(16);
        std::cout << "foo == (" << foo.x << ", " << foo.y << ")" << std::endl;
    }

    PolinaAksenova, 12 Мая 2021

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

    +2

    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
    template<typename F, typename... CurryArgs>
    struct curry {
        F func;
        std::tuple<CurryArgs...> tup{};
    
        curry(F f) : func(std::move(f)) {}
    
        template<typename... CtorArgs>
        curry(F f, CtorArgs &&... args) : func(std::move(f)), tup(std::forward<CtorArgs>(args)...) {}
    
        template<typename Tup1, typename Tup2>
        curry(F f, Tup1 && tup1, Tup2 && tup2) : func(std::move(f)), tup(std::tuple_cat(tup1, tup2)) {}
    
        template<typename... Args>
        auto operator()(Args &&... args)
        {
            constexpr size_t have_args = sizeof...(Args) + sizeof...(CurryArgs);
            constexpr size_t need_args = detail::functor_traits<F>::args_count;
            if constexpr (have_args > need_args) {
                static_assert(!sizeof(std::tuple_element_t<0, std::tuple<Args...>>*),
                              "Too many arguments.");
            } else if constexpr (have_args == need_args) {
                return std::apply(func, std::tuple_cat(tup, std::tuple(std::forward<Args>(args)...)));
            } else {
                return curry<decltype(func), CurryArgs..., Args...>(func, tup, std::tuple(std::forward<Args>(args)...));
            }
        }
    };
    
    int main()
    {
        auto f = [](int a, float b, const std::string & c) -> int {
            std::cout << "Functor! a = " << a << ", b = " << b << ", c = " << c << std::endl;
            return a + static_cast<int>(b);
        };
    
        std::cout << f(16, 42.1f, "Hello") << std::endl;
    
        auto c0 = curry(f);
        auto c1 = c0(16);
        auto c2 = c1(42.1f);
    
        c0(16)(42.1f)("Hello");
        c1(42.1f)("Hello");
        c2("Hello");
    
        c0(16, 42.1f)("Hello");
        c0(16, 42.1f, "Hello");
    
        c1(42.1f, "Hello");
    }

    Каррировали-каррировали, да выкаррировали.
    https://wandbox.org/permlink/LPXFUNpWOREcB3wH

    PolinaAksenova, 10 Мая 2021

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

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    if constexpr (BusMode::BLOCKING == mode) {
        derived()->send_block(arr, num);
    } else if (BusMode::IT == mode){
        derived()->send_it(arr, num);
    } else if (BusMode::DMA == mode){
        derived()->send_dma(arr, num);
    }

    https://habr.com/ru/post/556144/
    > Отладочный вывод на микроконтроллерах: как Concepts и Ranges отправили мой printf на покой
    Стреляем себе в ногу при помощи if constexpr.

    PolinaAksenova, 10 Мая 2021

    Комментарии (21)
  5. Go / Говнокод #27411

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    func getTransport(tt string) (iTransport, error) {
    	if tt == "scooter" {
    		return newElectricScooter(), nil
    	}
    	if tt == "quadcopter" {
    		return newQuadcopter(), nil
    	}
    	return nil, fmt.Errorf("Wrong type")
    }

    https://habr.com/ru/post/556512/
    > Factory Method Pattern
    > Привет, друзья. С вами Alex Versus.
    > Ранее мы говорили про шаблоны проектирования Одиночка и Стратегия, про тонкости реализации на языке Golang.
    > Сегодня расскажу про Фабричный метод.

    PolinaAksenova, 10 Мая 2021

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

    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
    template<typename T>
    struct method_traits;
    
    template<typename T, typename RetT, typename... Args>
    struct method_traits<RetT(T::*)(Args...)> {
        using this_type = T;
        using ret_type = RetT;
    
        template<size_t ArgIdx>
        using arg_type = typename std::tuple_element<ArgIdx, std::tuple<Args...>>::type;
    
        static constexpr size_t args_count = sizeof...(Args);
        static constexpr bool is_const = false;
        static constexpr bool is_lvalue = false;
        static constexpr bool is_rvalue = false;
    };
    
    template<typename T, typename RetT, typename... Args>
    struct method_traits<RetT(T::*)(Args...) const> : public method_traits<RetT(T::*)(Args...)> {
        static constexpr bool is_const = true;
    };
    
    template<typename T, typename RetT, typename... Args>
    struct method_traits<RetT(T::*)(Args...) &> : public method_traits<RetT(T::*)(Args...)> {
        static constexpr bool is_lvalue = true;
    };
    
    template<typename T, typename RetT, typename... Args>
    struct method_traits<RetT(T::*)(Args...) &&> : public method_traits<RetT(T::*)(Args...)> {
        static constexpr bool is_rvalue = true;
    };
    
    template<typename T, typename RetT, typename... Args>
    struct method_traits<RetT(T::*)(Args...) const &> : public method_traits<RetT(T::*)(Args...)> {
        static constexpr bool is_const = true;
        static constexpr bool is_lvalue = true;
    };
    
    template<typename T, typename RetT, typename... Args>
    struct method_traits<RetT(T::*)(Args...) const &&> : public method_traits<RetT(T::*)(Args...)> {
        static constexpr bool is_const = true;
        static constexpr bool is_rvalue = true;
    };

    А вдруг в новом стандарте ещё модификаторов в тип завезут? Страшня стало...

    PolinaAksenova, 07 Мая 2021

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

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    // Since C++20
    
    struct A {
      int&& r;
    };
    A a1{7}; // OK, lifetime is extended
    A a2(7); // well-formed, but dangling reference

    Удачной отладки!

    PolinaAksenova, 06 Мая 2021

    Комментарии (57)
  8. Python / Говнокод #27387

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    def main():
        pipe(int(input('Введите неотрицательное целое число: ')),   
             lambda n: (n, reduce(lambda x, y: x * y, range(1, n + 1))),   
             lambda tup: print(f'Факториал числа {tup[0]} равняется {tup[1]}'))

    Из https://habr.com/ru/post/555370/ (Функциональное ядро на Python).

    PolinaAksenova, 01 Мая 2021

    Комментарии (13)
  9. Куча / Говнокод #27385

    +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
    var proto = $new(null);
    proto.foo = function() { 
      $print(this.msg) 
    }
    
    var o = $new(null);
    o.msg = "hello";
    $objsetproto(o,proto);
    o.foo(); // print "hello"
    
    $objsetproto(o,null); // remove proto
    o.foo(); // exception

    Давайте писать ня Neko!
    https://nekovm.org

    PolinaAksenova, 29 Апреля 2021

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

    +4

    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
    int main()
    {
        using Human = NamedTuple<
            Field<"name", std::string>,
            Field<"age", int>
        >;
        using User = NamedTuple<
            Field<"login", std::string>,
            Field<"password", std::string>
        >;
    
        Human vasya{ "Vasya", 16 };
        vasya.get<"age">() = 17;
    
        User user{ "xXxBaCRHxXx", "p4ssword" };
    
        auto vasyaMerged = mergeNamedTuples(vasya, user);
    
        std::cout << vasyaMerged.get<"name">() << " is " << vasyaMerged.get<"age">() << " years old!" << std::endl;
        std::cout << "Login is " << vasyaMerged.get<"login">() << " and password is " << vasyaMerged.get<"password">() << std::endl;
    }

    Как похорошел C++ при C++20!

    https://wandbox.org/permlink/llpXuy7IOSugtxHo

    PolinaAksenova, 18 Апреля 2021

    Комментарии (72)
  11. Java / Говнокод #27360

    +2

    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
    65. 65
    66. 66
    67. 67
    package org.trishinfotech.builder;
    
    public class Car {
    
        private String chassis;
        private String body;
        private String paint;
        private String interior;
        
        public Car() {
            super();
        }
    
        public Car(String chassis, String body, String paint, String interior) {
            this();
            this.chassis = chassis;
            this.body = body;
            this.paint = paint;
            this.interior = interior;
        }
    
        public String getChassis() {
            return chassis;
        }
    
    	public void setChassis(String chassis) {
            this.chassis = chassis;
    
        }
    
        public String getBody() {
            return body;
        }
    
        public void setBody(String body) {
            this.body = body;
        }
    
        public String getPaint() {
            return paint;
        }
    
        public void setPaint(String paint) {
            this.paint = paint;
        }
    		public String getInterior() {
            return interior;
        }
    
        public void setInterior(String interior) {
            this.interior = interior;
        }
    
        public boolean doQualityCheck() {
            return (chassis != null && !chassis.trim().isEmpty()) && (body != null && !body.trim().isEmpty())
                    && (paint != null && !paint.trim().isEmpty()) && (interior != null && !interior.trim().isEmpty());
        }
    
        @Override
        public String toString() {
            // StringBuilder class also uses Builder Design Pattern with implementation of java.lang.Appendable interface
            StringBuilder builder = new StringBuilder();
            builder.append("Car [chassis=").append(chassis).append(", body=").append(body).append(", paint=").append(paint)
            return builder.toString();
        }
    
    }

    https://habr.com/ru/company/otus/blog/552412/
    Паттерн проектирования Builder (Строитель) в Java

    PolinaAksenova, 15 Апреля 2021

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