Git Product home page Git Product logo

tdd-and-dependency-injecion-with-swift's People

Contributors

stanley-jovel avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

tdd-and-dependency-injecion-with-swift's Issues

Great project

Hi good started project, just some initials comments:

  • For JSON stuff you could use Codable, is already built in Swift stdlib and Foundation also has it's own JSONDecoder/Encoder.
  • There are a lot of folders with the same name, try to rename it.
  • When you are using Rx, try to use MVVM, that's not a rule, but for reactive programming MVVM is a good fit and everything feels more natural.

Refactor viewDidLoad

override func viewDidLoad() {
super.viewDidLoad()
if let pokemon = pokemon {
pokemonNameLabel.text = pokemon.name?.capitalized
apiWrapper?.getPokemonWith(id: pokemon.name!).subscribe(
onSuccess: { pokemon in
self.pokemonImageView.kf.setImage(
with: URL(string: pokemon.sprite!),
placeholder: self.activityIndicator as! PlaceholderView
)
let dataSource = RxTableViewSectionedReloadDataSource<SectionOfPokemonDetails>(
configureCell: { dataSource, tableView, indexPath, item in
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
cell.textLabel?.text = item.capitalized
return cell
}
)
dataSource.titleForHeaderInSection = { dataSource, index in
return dataSource.sectionModels[index].header
}
let sections = [
SectionOfPokemonDetails(header: "Types", items: pokemon.types ?? []),
SectionOfPokemonDetails(header: "Abilities", items: pokemon.abilities ?? []),
SectionOfPokemonDetails(header: "Moves", items: pokemon.moves ?? []),
]
Observable.just(sections)
.bind(to: self.detailsTableView.rx.items(dataSource: dataSource))
.disposed(by: self.disposeBag)
}
).disposed(by: disposeBag)
}
}

Method is too big and complex, would be nice to make a refactoring.

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.