Giter Club home page Giter Club logo

android-calculator's Introduction

Welcome aboard 👋

Anurag's GitHub stats

Top Langs

android-calculator's People

Watchers

 avatar

android-calculator's Issues

Ревью #1

  1. Лишние комментарии лучше нужно убирать

    /* private lateinit var button0: Button
    private lateinit var button1: Button
    private lateinit var button2: Button
    private lateinit var button3: Button
    private lateinit var button4: Button
    private lateinit var button5: Button
    private lateinit var button6: Button
    private lateinit var button7: Button
    private lateinit var button8: Button
    private lateinit var button9: Button*/

  2. Эти переменные должны быть private, потому что используются только внутри класса активити

    var oldValue = "0"
    var newValue = "0"
    var currValue = "0"
    var operation = "nothing"
    var gotErr = false

  3. findViewById конечно жизнеспособный вариант, но порождает кучу лишнего кода. Куда проще и лучше использовать ViewBinding

    displayCurr = findViewById(R.id.textViewDigits)
    buttonPlus = findViewById(R.id.button_plus)
    buttonMinus = findViewById(R.id.button_minus)
    buttonMultiply = findViewById(R.id.button_multiply)
    buttonDivide = findViewById(R.id.button_divide)
    buttonModulo = findViewById(R.id.button_percent)
    buttonPlusMinus = findViewById(R.id.button_plusminus)
    buttonEqual = findViewById(R.id.button_equal)
    buttonAC = findViewById(R.id.button_AC)
    buttonComma = findViewById(R.id.button_comma)

  4. Операции лучше сделать с помощью enum. Когда операции нет в переменной можно хранить null. Так уйдет сравнение строк, которое чревато ошибками

  5. Мило, но этому к сожалению тут не место

    if (displayCurr.text == "H ITS" || displayCurr.text == "0")

  6. Это условие делать трижды одну и ту же операцию. Вопрос, зачем оно тогда тут нужно? С условием ниже похожая история.

    displayCurr.text = digit.toString()
    if (digit == 1)
    displayCurr.text = "$digit"
    else
    displayCurr.text = digit.toString()

  7. Всю конструкцию с регуляркой можно записать проще и понятнее. А будь enum и того проще.

    val regex = """[%/*\-+]""".toRegex()
    //val charArray = currValue.toCharArray()
    if (regex.matches(oldValue.toCharArray()[oldValue.length - 1].toString())) {

oldValue.lastOrNull()?.toString() in listOf("%", "/", "*", "-", "+")
  1. Вывести Toast с сообщением об ошибке было бы быстрее, чем написать этот комментарий

    } catch (E: Exception) {
    // some kind of error i dont even want to handle. i spent too much for this calculator. i have TONS of other tasks
    }

  2. Точки с запятой в Kotlin не нужны. Кроме одного случая

  3. Это можно записать куда проще

    private fun isFloat(value:String): Boolean{
    if (value.indexOf('.') != -1)
    {
    return true
    }
    return false
    }

private fun isFloat(value:String) = value.indexOf('.') != -1
  1. Эта цифра 8 так и просится в константу

  2. Использовать второй Constraint в верстке не нужно. Все это верстается в одном лайауте. Так только перегружаешь лишний раз экран

  3. Ширину и высоту лучше не выносить в стили. Так теряется гибкость твоего стиля.

    <item name="android:layout_width">0dp</item>
    <item name="android:layout_height">0dp</item>

  4. Вот за это убивать надо. Я понимаю, что так код стал короче и проще обработка, но понятность резко потерялась. Установить клик быстро на несколько элементов можно с помощью Group

    android:onClick="digitButtonPressed"

  5. Любые строковые значения (и цвета тоже) должны быть в ресурсах и использоваться оттуда. Неважно используешь ты их в коде или верстке.

  6. То что знаешь и используешь Guideline хорошо, но тут явно перебор с ними. Все это можно сделать просто с помощью обычных привязок и Chain

  7. Лучше не оставлять в верстке элементов с дефолтными id. Теряется читаемость твоего кода.

  8. Вот так приложение выглядит в альбомной ориентации. Скорее всего всему бедой размер шрифта + Guideline
    image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.