Skip to content

Classes and modules#5

Open
Script06 wants to merge 5 commits into
mainfrom
classes_and_modules
Open

Classes and modules#5
Script06 wants to merge 5 commits into
mainfrom
classes_and_modules

Conversation

@Script06
Copy link
Copy Markdown
Owner

@Script06 Script06 commented Aug 3, 2023

No description provided.

Copy link
Copy Markdown

@gambala gambala left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Неплохо. Технически работает. Но можно улучшить:
3 просчета (init не метод класса, сохранение в файл в каждом действии, дробные суммы)
1 место для улучшения (поиск постов через .find/.detect)

Comment thread 5.classes and modules/main.rb Outdated
require_relative 'CashMachine'
require 'pry'
atm_1 = CashMachine.new
atm_1.init
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

init по условиям задачи должен быть методом класса, а не методом экземпляра

Comment thread 5.classes and modules/CashMachine.rb Outdated
def deposit
puts 'Введите сумму для внесения:'
amount = gets.chomp.to_f
if amount < 1.0
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Хинт из реальной практики – дробные числа (float) при складывании вычитании могут давать погрешность в виде дополнительных 0.000003 значений после запятой. Для банка это значит ниоткуда взявшиеся суммы которые теперь надо платить клиентам :) Поэтому для денег лучше использовать целые числа. На практике используют либо центы и копейки (1 рубль → 100, 43 рубля → 4300) либо целые рубли (1 рубль → 1, 43 рубля → 43).

Хочу видеть работу с целыми числами

Comment thread 5.classes and modules/CashMachine.rb Outdated
end
f = File.open(DB_ATM, 'w')
f.puts(self.current_balance - amount)
f.close
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Я ради интереса заглянул в условие прошлого урока (файлы) и там по банкомату есть интересный пункт – сохранять значение только один раз при выходе из программы. Твой вариант с сохранением в файл в каждом действии технически тоже работает, но я бы сделал сохранение отдельно при выходе. А внутри – например работу с инстанс-переменной.

Comment thread 5.classes and modules/route.rb Outdated
puts 'введите id поста, который хотите отобразить:'
id = gets.chomp.to_i
flag = true
self.posts.each_with_index do |post, index|
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Технически рабочая история, предлагаю улучшить используя специально существующие для таких случаев методы find/detect: https://stackoverflow.com/a/16250952/2237879, это позволит тебе обойтись без цикла и переменной flag. Ищем пост, если да – выводим его, если нет - выводим сообщение.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants