ФлеймФорумПрограммирование

Ищу человека который объяснит и научит C# (23 стр)

Страницы: 118 19 20 21 22 23
#330
22:48, 4 дек 2021

Nomad
> self["fu"]

Просто руки оторвать, за захардкоженную строковую константу, нормальный человек сделал бы

self[STR_FOO] =

и волосы остались бы "мягкими и шелковистыми" (с).

#331
22:50, 4 дек 2021

Nomad
Пихтон (CPython конкретно) вообще-то компилируется в байткод, и там даже оптимизации какие-то есть

#332
22:50, 4 дек 2021

Nomad

Лицо попроще сделай,  гуру

Python code is compiled automatically the first time it is run, by the CPython (standard Python) interpreter.

#333
22:55, 4 дек 2021

Ну формально они могут так писать,  но по сути факт того что программа вида

if datetime.now().hour >= 12:
   from noexistant_package import foo
else:
   print("mom look i'm COMPILED")

будет работать первую половину дня говорит о том что текст просто переводится в байткод
и я догадываюсь что это не та "компиляция" которую тут подразумевает большинство людей, особенно приводя в пример компиляцию Java

#334
9:07, 5 дек 2021

0iStalker
> счастливой отладки
  Первый же банальный юнит-тест конструктора такое отловит. Вообще-то это обычная практика в любом языке писать тесты на то, что конструктор создаёт объект с ожидаемыми внутренностями. А то потом какой-нибудь Вася зайдёт и сотрёт что-нибудь или перепишет так, что компилироваться всё ещё будет, но логика будет нарушена и "счастливой отладки". А так один раз написал тест и голова больше не болит.

#335
11:07, 5 дек 2021

Zefick
> Первый же банальный юнит-тест конструктора такое отловит.

Не отловит, ведь в конструкторе нет проблем. И во-вторых,  давайте теперь к каждой программе половину компилятора здорового человека писать... да нафиг нужен этот геморрой.  Насчёт тестов, - это удел крупных компаний, в маленьких конторах никто не даст тратит ресурсы на них,  максимум логи писать.

#336
12:03, 5 дек 2021

0iStalker
> Насчёт тестов, - это удел крупных компаний, в маленьких конторах никто не даст
> тратит ресурсы на них

ага, давай хреначить код просто так

#337
13:34, 5 дек 2021

0iStalker
> Не отловит, ведь в конструкторе нет проблем.
  В конструкторе проблема нарушения логики. Странно, что ты дурачка ломаешь, ведь сам же этот пример написал с намёком на то, что там что-то не так, а теперь утверждаешь, что нет проблем. Раз нет проблем, то о чём тогда разговор?
  Вот элементарный тест, который находит проблему:

x = SomeClass(42)
assertTrue(x.foo == 42)

> Насчёт тестов, - это удел крупных компаний
  Это удел компаний, в которых умеют правильно писать код. То, что они в последствии становятся крупными это уже следствие.

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

#338
15:46, 5 дек 2021

Zefick
>   Первый же банальный юнит-тест конструктора такое отловит.
Всё верно. А если еще и перестать палкой по камню стучать, и заменить Notepad на норм ИДЕ, то любая норм иде сразу все красным замажет в том месте где ты вдруг в юзер коде используешь поле, которое никогда не обьявлялось на классе или в конструкторе.
Проблема высосана из пальца, причем даже высосана некорректно

#339
16:07, 5 дек 2021

0iStalker
> Не отловит, ведь в конструкторе нет проблем

В питоне для частичной гарантии от опечаток в названиях полей есть __slots__  . Частичной - потому что запуститься коду с опечаткой все равно даст. Но вот пройти место с опечаткой уже не даст, то есть "счастливой отладки" не потребуется, косяк вылезет исключением при первом же выполнении опечатки.

0iStalker
> А можно изначально был сделать так, чтобы не наступать на такие детские грабли?

Нельзя, потому что идеология питона в отношении объектов совершенно другая. В самом языке у объектов вообще нет ни полей, ни методов ни свойств. Есть только операция атрибутирования (операция "точка", magic-методы __getattr__/__setattr__/__delattr__) и сопряженный с ней интерфейс дескрипторов (magic-методы __get__/__set__/__del__). То есть то, что пишется после точки - это сугубо динамическая вещь.

А стандартное поведение с полями/слотами и bound-методами - это уже реализация операций атрибутирования и декскрипторов в builtins в стдлибе для объектов тех классов, что созданы через синтаксис class с дефолтным метаклассом type. И как уже сказал выше, в качестве костыля, частично ограничивающего динамику, прикручен механизм слотов (тоже прикручено через реализацию в builtins в стдлибе).

#340
13:58, 6 дек 2021

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

ты спроси у него про исключения

#341
22:55, 6 дек 2021

0iStalker
> self[STR_FOO]
А это мы как раз обсуждали в соседней теме - удачни на каждый чих-пук перекомпилировать по 20 минут весь проект

#342
9:39, 8 дек 2021

Nomad
> удачни на каждый чих-пук перекомпилировать по 20 минут весь проект

ну не каждый же

Страницы: 118 19 20 21 22 23
ФлеймФорумПрограммирование

Тема в архиве.