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 ואינטרנט. הירשמו לסנכרון מנויים במכשירים שונים.

 

מדריך עזר מהיר