Classes and modules#5
Conversation
gambala
left a comment
There was a problem hiding this comment.
Неплохо. Технически работает. Но можно улучшить:
3 просчета (init не метод класса, сохранение в файл в каждом действии, дробные суммы)
1 место для улучшения (поиск постов через .find/.detect)
| require_relative 'CashMachine' | ||
| require 'pry' | ||
| atm_1 = CashMachine.new | ||
| atm_1.init |
There was a problem hiding this comment.
init по условиям задачи должен быть методом класса, а не методом экземпляра
| def deposit | ||
| puts 'Введите сумму для внесения:' | ||
| amount = gets.chomp.to_f | ||
| if amount < 1.0 |
There was a problem hiding this comment.
Хинт из реальной практики – дробные числа (float) при складывании вычитании могут давать погрешность в виде дополнительных 0.000003 значений после запятой. Для банка это значит ниоткуда взявшиеся суммы которые теперь надо платить клиентам :) Поэтому для денег лучше использовать целые числа. На практике используют либо центы и копейки (1 рубль → 100, 43 рубля → 4300) либо целые рубли (1 рубль → 1, 43 рубля → 43).
Хочу видеть работу с целыми числами
| end | ||
| f = File.open(DB_ATM, 'w') | ||
| f.puts(self.current_balance - amount) | ||
| f.close |
There was a problem hiding this comment.
Я ради интереса заглянул в условие прошлого урока (файлы) и там по банкомату есть интересный пункт – сохранять значение только один раз при выходе из программы. Твой вариант с сохранением в файл в каждом действии технически тоже работает, но я бы сделал сохранение отдельно при выходе. А внутри – например работу с инстанс-переменной.
| puts 'введите id поста, который хотите отобразить:' | ||
| id = gets.chomp.to_i | ||
| flag = true | ||
| self.posts.each_with_index do |post, index| |
There was a problem hiding this comment.
Технически рабочая история, предлагаю улучшить используя специально существующие для таких случаев методы find/detect: https://stackoverflow.com/a/16250952/2237879, это позволит тебе обойтись без цикла и переменной flag. Ищем пост, если да – выводим его, если нет - выводим сообщение.
No description provided.