Artwork

ืชื•ื›ืŸ ืžืกื•ืคืง ืขืœ ื™ื“ื™ iteration podcast, John Jacob, and JP Sio - Web Developers. ื›ืœ ืชื•ื›ืŸ ื”ืคื•ื“ืงืืกื˜ื™ื ื›ื•ืœืœ ืคืจืงื™ื, ื’ืจืคื™ืงื” ื•ืชื™ืื•ืจื™ ืคื•ื“ืงืืกื˜ื™ื ืžื•ืขืœื™ื ื•ืžืกื•ืคืงื™ื ื™ืฉื™ืจื•ืช ืขืœ ื™ื“ื™ iteration podcast, John Jacob, and JP Sio - Web Developers ืื• ืฉื•ืชืฃ ืคืœื˜ืคื•ืจืžืช ื”ืคื•ื“ืงืืกื˜ ืฉืœื”ื. ืื ืืชื” ืžืืžื™ืŸ ืฉืžื™ืฉื”ื• ืžืฉืชืžืฉ ื‘ื™ืฆื™ืจื” ืฉืœืš ื”ืžื•ื’ื ืช ื‘ื–ื›ื•ื™ื•ืช ื™ื•ืฆืจื™ื ืœืœื ืจืฉื•ืชืš, ืืชื” ื™ื›ื•ืœ ืœืขืงื•ื‘ ืื—ืจ ื”ืชื”ืœื™ืš ื”ืžืชื•ืืจ ื›ืืŸ https://he.player.fm/legal.
Player FM - ืืคืœื™ืงืฆื™ื™ืช ืคื•ื“ืงืืกื˜
ื”ืชื—ืœ ื‘ืžืฆื‘ ืœื ืžืงื•ื•ืŸ ืขื ื”ืืคืœื™ืงืฆื™ื” Player FM !

Refactoring ๐Ÿ› Getting Into The Weeds

41:35
 
ืฉืชืคื•
 

Manage episode 235733845 series 1900125
ืชื•ื›ืŸ ืžืกื•ืคืง ืขืœ ื™ื“ื™ iteration podcast, John Jacob, and JP Sio - Web Developers. ื›ืœ ืชื•ื›ืŸ ื”ืคื•ื“ืงืืกื˜ื™ื ื›ื•ืœืœ ืคืจืงื™ื, ื’ืจืคื™ืงื” ื•ืชื™ืื•ืจื™ ืคื•ื“ืงืืกื˜ื™ื ืžื•ืขืœื™ื ื•ืžืกื•ืคืงื™ื ื™ืฉื™ืจื•ืช ืขืœ ื™ื“ื™ iteration podcast, John Jacob, and JP Sio - Web Developers ืื• ืฉื•ืชืฃ ืคืœื˜ืคื•ืจืžืช ื”ืคื•ื“ืงืืกื˜ ืฉืœื”ื. ืื ืืชื” ืžืืžื™ืŸ ืฉืžื™ืฉื”ื• ืžืฉืชืžืฉ ื‘ื™ืฆื™ืจื” ืฉืœืš ื”ืžื•ื’ื ืช ื‘ื–ื›ื•ื™ื•ืช ื™ื•ืฆืจื™ื ืœืœื ืจืฉื•ืชืš, ืืชื” ื™ื›ื•ืœ ืœืขืงื•ื‘ ืื—ืจ ื”ืชื”ืœื™ืš ื”ืžืชื•ืืจ ื›ืืŸ https://he.player.fm/legal.

S06E04 - Iteration
A weekly podcast about development and design through the lens of amazing books, chapter-by-chapter
Refactors Before -

  • Extract Function
  • Change Function Decleration
  • Replace Temp with query
  • Replace conditional with polymorphism
    Refactoring in Practice
    Introduce Parameter Object - 140
  • Structure your parameters
  • This way order doesnโ€™t matter
  • You can set default values
  • Grouping data is more clear in the relationship
    Replace Constructor with Factory Function 334 -
  • Encapsulating the creation of objects (the initialize) into a factory Function
    In Ruby: Creating a new User and Organization within a UserOrganizationFactory call / Tangent / Related to FormObjects.
    In JavaScript: availableVariants - big array with Item, Colors, Sizes - replaced with variantFactory(34,2345,2345,) just passing IDโ€™s
    Extract Function into class - 182
  • Consolidate up a bunch of related functions into a parent class
    Split Phase 154 - Variant of Extract Function
  • When a function is dealing with two different things - look for a way to split it out - was cleaner approach.
    JavaScript
  • Cart.js - logic of API calls associated with the user input
  • Split this into discrete functions
    Ruby
  • Notification logic was calling Twilio
  • Encapsulate this into itโ€™s own method
  • Later then it was a service object to itself
    My Cart.js Story - (Refactoring in Vue / JavaScript)
  • addItem - for adding item to cart
  • removeItem - for removing item from cart
  • increaseItemCount - for adjusting line item
  • decreaseItemCount - for adjusting line item
  • setLineItemCount - for adding to cart an initial value
    First - Rename Methods (Change Function Declaration) 124
  • addItem - became - addItemToCart
  • removeItem - became - removeItemFromCart
  • increaseItem - became - increaseLineItemCount
  • decreaseItem - became - decreaseLineItemCount
    Second - Extract Function 106
  • Both increaseLineItemCount and decreaseLineItemCount were doing something very similar.
  • So I created a new function of setLineItemQty
  • Both my methods of increaseLineItemCount and decreaseLineItemCount were then calling this setLineItemQty that accepted a qty parameter - function.
    Second - parameterize Function 310
  • This did take a refactor of my vue listeners.
  • Since I had this new setLineItemQty that accepted a qty parameter
  • I replaced increaseLineItemCount and decreaseLineItemCount a single function of setLineItemQty
  • Deleted a lot of code
    Third - Used inline function 106 to simply alias another function.
  • Through the above refactors I realized that addItemToCart was doing the same transactional work as setLineItemQty to 1
  • I removed the body of addItemToCart and replaced it with setLineItemQty with the default params accordingly.
    Fourth - Again used inline function 106 to alias another function
  • Through the above refactors I realized that removeItemFromCart was doing the same transactional work as setLineItemQty to 0
  • I removed the body of removeItemFromCart and replaced it with setLineItemQty with the default params accordingly
    Fifth - I used
    I realized that all these functions were just doing the same thing. Adjusting CartLineItemCount.
  • The final refactor simply deleted removeItemFromCart and addItemToCart
    In closing:
  • Code went from 160 lines to around 60
  • Itโ€™s way DRY
  • Itโ€™s way more reusable
  • The interface to my cart.js is now just a single function of setLineItemQty
    Updated my vue listeners - Every interaction within this front end is just calling setLineItemQty

Picks:

โ€ฆ   continue reading

78 ืคืจืงื™ื

Artwork

Refactoring ๐Ÿ› Getting Into The Weeds

iteration

113 subscribers

published

iconืฉืชืคื•
 
Manage episode 235733845 series 1900125
ืชื•ื›ืŸ ืžืกื•ืคืง ืขืœ ื™ื“ื™ iteration podcast, John Jacob, and JP Sio - Web Developers. ื›ืœ ืชื•ื›ืŸ ื”ืคื•ื“ืงืืกื˜ื™ื ื›ื•ืœืœ ืคืจืงื™ื, ื’ืจืคื™ืงื” ื•ืชื™ืื•ืจื™ ืคื•ื“ืงืืกื˜ื™ื ืžื•ืขืœื™ื ื•ืžืกื•ืคืงื™ื ื™ืฉื™ืจื•ืช ืขืœ ื™ื“ื™ iteration podcast, John Jacob, and JP Sio - Web Developers ืื• ืฉื•ืชืฃ ืคืœื˜ืคื•ืจืžืช ื”ืคื•ื“ืงืืกื˜ ืฉืœื”ื. ืื ืืชื” ืžืืžื™ืŸ ืฉืžื™ืฉื”ื• ืžืฉืชืžืฉ ื‘ื™ืฆื™ืจื” ืฉืœืš ื”ืžื•ื’ื ืช ื‘ื–ื›ื•ื™ื•ืช ื™ื•ืฆืจื™ื ืœืœื ืจืฉื•ืชืš, ืืชื” ื™ื›ื•ืœ ืœืขืงื•ื‘ ืื—ืจ ื”ืชื”ืœื™ืš ื”ืžืชื•ืืจ ื›ืืŸ https://he.player.fm/legal.

S06E04 - Iteration
A weekly podcast about development and design through the lens of amazing books, chapter-by-chapter
Refactors Before -

  • Extract Function
  • Change Function Decleration
  • Replace Temp with query
  • Replace conditional with polymorphism
    Refactoring in Practice
    Introduce Parameter Object - 140
  • Structure your parameters
  • This way order doesnโ€™t matter
  • You can set default values
  • Grouping data is more clear in the relationship
    Replace Constructor with Factory Function 334 -
  • Encapsulating the creation of objects (the initialize) into a factory Function
    In Ruby: Creating a new User and Organization within a UserOrganizationFactory call / Tangent / Related to FormObjects.
    In JavaScript: availableVariants - big array with Item, Colors, Sizes - replaced with variantFactory(34,2345,2345,) just passing IDโ€™s
    Extract Function into class - 182
  • Consolidate up a bunch of related functions into a parent class
    Split Phase 154 - Variant of Extract Function
  • When a function is dealing with two different things - look for a way to split it out - was cleaner approach.
    JavaScript
  • Cart.js - logic of API calls associated with the user input
  • Split this into discrete functions
    Ruby
  • Notification logic was calling Twilio
  • Encapsulate this into itโ€™s own method
  • Later then it was a service object to itself
    My Cart.js Story - (Refactoring in Vue / JavaScript)
  • addItem - for adding item to cart
  • removeItem - for removing item from cart
  • increaseItemCount - for adjusting line item
  • decreaseItemCount - for adjusting line item
  • setLineItemCount - for adding to cart an initial value
    First - Rename Methods (Change Function Declaration) 124
  • addItem - became - addItemToCart
  • removeItem - became - removeItemFromCart
  • increaseItem - became - increaseLineItemCount
  • decreaseItem - became - decreaseLineItemCount
    Second - Extract Function 106
  • Both increaseLineItemCount and decreaseLineItemCount were doing something very similar.
  • So I created a new function of setLineItemQty
  • Both my methods of increaseLineItemCount and decreaseLineItemCount were then calling this setLineItemQty that accepted a qty parameter - function.
    Second - parameterize Function 310
  • This did take a refactor of my vue listeners.
  • Since I had this new setLineItemQty that accepted a qty parameter
  • I replaced increaseLineItemCount and decreaseLineItemCount a single function of setLineItemQty
  • Deleted a lot of code
    Third - Used inline function 106 to simply alias another function.
  • Through the above refactors I realized that addItemToCart was doing the same transactional work as setLineItemQty to 1
  • I removed the body of addItemToCart and replaced it with setLineItemQty with the default params accordingly.
    Fourth - Again used inline function 106 to alias another function
  • Through the above refactors I realized that removeItemFromCart was doing the same transactional work as setLineItemQty to 0
  • I removed the body of removeItemFromCart and replaced it with setLineItemQty with the default params accordingly
    Fifth - I used
    I realized that all these functions were just doing the same thing. Adjusting CartLineItemCount.
  • The final refactor simply deleted removeItemFromCart and addItemToCart
    In closing:
  • Code went from 160 lines to around 60
  • Itโ€™s way DRY
  • Itโ€™s way more reusable
  • The interface to my cart.js is now just a single function of setLineItemQty
    Updated my vue listeners - Every interaction within this front end is just calling setLineItemQty

Picks:

โ€ฆ   continue reading

78 ืคืจืงื™ื

ื›ืœ ื”ืคืจืงื™ื

ร—
 
Loading โ€ฆ

ื‘ืจื•ื›ื™ื ื”ื‘ืื™ื ืืœ Player FM!

Player FM ืกื•ืจืง ืืช ื”ืื™ื ื˜ืจื ื˜ ืขื‘ื•ืจ ืคื•ื“ืงืืกื˜ื™ื ื‘ืื™ื›ื•ืช ื’ื‘ื•ื”ื” ื‘ืฉื‘ื™ืœื›ื ื›ื“ื™ ืฉืชื”ื ื• ืžื”ื ื›ืจื’ืข. ื–ื” ื™ื™ืฉื•ื ื”ืคื•ื“ืงืืกื˜ ื”ื˜ื•ื‘ ื‘ื™ื•ืชืจ ื•ื”ื•ื ืขื•ื‘ื“ ืขืœ ืื ื“ืจื•ืื™ื“, iPhone ื•ืื™ื ื˜ืจื ื˜. ื”ื™ืจืฉืžื• ืœืกื ื›ืจื•ืŸ ืžื ื•ื™ื™ื ื‘ืžื›ืฉื™ืจื™ื ืฉื•ื ื™ื.

 

ืžื“ืจื™ืš ืขื–ืจ ืžื”ื™ืจ

ืคื•ื“ืงืืกื˜ื™ื ืžื•ื‘ื™ืœื™ื
ื”ืื–ืŸ ืœืชื•ื›ื ื™ืช ื”ื–ื• ื‘ื–ืžืŸ ืฉืืชื” ื—ื•ืงืจ
ื”ืคืขืœื”