Pull to refresh
-3
Виталий Симаков@vsting

User

Send message

Когда я понял, что оно образовано от слова «покупать», то это стало выглядеть более нелепо.

Они не могли придумать просто `static {}` вместо `companion object {}`?
Все таки эта штука имеет связь с Java.

Kotlin может компилироваться не только в байткод Java, но еще и в JavaScript ;-)

Получается, если конструктор константный, то это уже Синглтон?

Кажется, этот ответ лежит на поверхности. Есть известное выражение: "работает - не трогай"! Мало кому хочется переписывать какой-то старый софт, хотя все понимают, что это необходимо. Однако это затратно и порой требует приложения больших усилий. Так и в данном случае, переписывать часть учебной программы — это как провести целую реформу. Вопрос о том, на каком языке следует изучать программирование, спорный, и особенно спорно, что JavaScript подходит лучше, чем Pascal.

Сложно написать надёжный код, если ты не знаешь заранее, чего от него ждешь.

Поэтому есть TDD, но это сложно, проще сначала написать какой-код(а потом ещё и прийти к выводу что он не нужен) и только потом покрывать авто тестами.

Если бизнес уволит сотрудников заменив их цифровыми сотрудниками, то бизнес загнётся. Потому что не кому будет покупать услуги бизнеса, так как не на что будет.

Что бы правильно получилось нужно вывод прописать так:

puts result.to_s("F") # выведет 1.0

Ruby:

require 'bigdecimal'

num1_str = "9999999999999999.0"
num2_str = "9999999999999998.0"

num1 = BigDecimal(num1_str)
num2 = BigDecimal(num2_str)

result = num1 - num2
puts result
0.1e1

В C# нужно указать в конце чисел суффикс `m`:

decimal num1 = 9999999999999999.0m;
decimal num2 = 9999999999999998.0m;

decimal result = num1 - num2;
1.0


Си.
Правильно:

#include <stdio.h>

int main() { 
    long double result = 9999999999999999.0L - 9999999999999998.0L;
    printf("Result: %.15Lf\n", result);
    return 0;
}
1.000000000000000


Просто код который приведен в посте, не правильно использует вычисления с большими числами, судя по всему.

Про нехватку ИТшников говорят только барыги курсов.
А некоторые компании поддакивают им для того что бы больше было специалистов, для того что бы сбить зарплаты в этой области.

Kotlin:

import java.math.BigDecimal

fun main() {
  val num1 = BigDecimal("9999999999999999.0")
  val num2 = BigDecimal("9999999999999998.0")

  val result = num1.subtract(num2)
  println(result)
}
1.0

import Foundation

let num1 = Decimal(9999999999999999.0)
let num2 = Decimal(9999999999999998.0)

let result = num1 - num2
print(result)
2.048

Но это в онлайн компиляторе.

А я как раз считаю лучшей серией Героев 4.

В ней лучшее от классики плюс добавили другие интересные вещи. Улучшили 2D графику, можно управлять героями и вообще удобнее управление.

Следует в названии статьи уточнять, о ОРМ в реализации какого языка программирования идёт речь. Но судя потому, как оно выглядит на PHP, то да, в этом случае лучше уж на чистом SQL писать.

Длинные названия методов как processRawDataIntoModel() это хороший код?

Тесты служат предохранителем от произвольного изменения кода, своего рода защита от дурака.
Если оставлять какой-то код без тестов то в будущем как раз будут снова и снова возникать проблемы, и вот тут и будут выходить переплаты.

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

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

Покрытие кода тестами, даже легаси, это ваша гарантия заказчику, качества и ответственности вашей работы, а все остальное это отговорки.
И это гарантия что ваша работа не говно и код не сломается потом, и работодателю не придется переплачивать деньги другому программисту, что бы тот снова копался в этом легаси.

TDD, подходит под легаси. Представьте себе когда вам нужно править кусок готового легаси, вы же не будете его делать без тестов? Если будете это просто означает что вам нравится тратить время больше на ручные тесты, так как ручные тесты больше времени занимают на тестирование.

Information

Rating
Does not participate
Location
Ноябрьск, Ямало-Ненецкий АО, Россия
Date of birth
Registered
Activity

Specialization

Бэкенд разработчик, Разработчик мобильных приложений
Средний
From 220,000 ₽