177 HENOINA

Code Smell 303 - Ahoana no ahafahanao manakana ny fisarahana ny mpanjifa misy anao rehefa manao fanovana

ny Maximiliano Contieri5m2025/06/13
Read on Terminal Reader

Lava loatra; Mamaky

Tokony hamerina ny API ianao mba hisorohana ny fanitsakitsahana ny mpanjifa misy anao rehefa manao fanovana
featured image - Code Smell 303 - Ahoana no ahafahanao manakana ny fisarahana ny mpanjifa misy anao rehefa manao fanovana
Maximiliano Contieri HackerNoon profile picture

Rehefa manimba ny API ianao raha tsy misy fampitandremana, dia manimba ny finoana ianao

TL;DR: Tokony hamerina ny API ianao mba hisorohana ny fanitsakitsahana ny mpanjifa misy anao rehefa manao fanovana.

TL;DR: Tokony hamerina ny API ianao mba hisorohana ny fanitsakitsahana ny mpanjifa misy anao rehefa manao fanovana.

Ny olana

  • Ny fampiharana mpanjifa dia crashes
  • Ny tsy fahombiazan'ny integration
  • Ny fanitsakitsahana ny fitsipiky ny tsy fahampiana kely indrindra
  • Ny fotoana
  • Ny fitokisanao
  • Mitaky rollbacks ny fandefasana
  • Ny fotoana nandany ny fampandrosoana
  • Ny faharetan'ny traikefa amin'ny mpampiasa

Ny vahaolana

  1. Ampiharina amin'ny semantic versioning
  2. Ny fametrahana ny backward compatibility
  3. Mamorona fampitandremana momba ny depreciation
  4. Mamorona ny lalana
  5. Ampiasao ny Content Negotiation
  6. Ny fametrahana ireo dikan parallel
  7. Manamarika ny fiovana alohan'ny
  8. Ampiasao ny endrika tsy tapaka
  9. Ny antontan-taratasy manimba ny fiovana mazava
  10. Ataovy azo antoka ny fametrahana ny parameters amin'ny logging
  11. Manandrana ny dikan-teny vaovao
  12. Ny fanesorana ny asa tsy tapaka taorian'ny masoandro

Ny fifanarahana

Rehefa manova ny API ianao raha tsy misy versioning tsara, dia mamorona fanovana mahery vaika izay misy fiantraikany amin'ny mpanjifa rehetra.


Manery ny mpanjifa hanatsarana ny fehezan-dalàna avy hatrany ianao na miatrika fahavoazana ao amin'ny rafitra.


Manitsakitsaka ny fifanarahana eo amin'ny mpamatsy API sy ny mpanjifa ianao.


Ny rindrambaiko maoderina dia miankina be amin'ny stability API, ary ny fametrahana fanovana tsy misy fampitandremana dia afaka mamorona fahadisoana amin'ny rafitra miankina.


Izany dia zava-dehibe kokoa amin'izao fotoana izao noho ny hatramin'izay.Maro ny IA mamorona ny vahaolana amin'ny fampiasana ny antontan-taratasy API efa misy.


Rehefa manatsara ny API ianao raha tsy mitazona ny fifanarahana miverimberina, dia mety hisy loza ianao amin'ny fametrahana ny fampiharana rehetra izay miankina amin'izany.


Izany dia miteraka tsy fandriampahalemana, fahadisoana, ary vidin'ny fanitsiana ho an'ny mpampiasa.


Matetika ny mpanjifa no manomeNy fahadisoanaamin'ny endri-javatra vaovao, saingy tsy nitsahatra ny fitondran-tena maharitra teo aloha.


Ny versioning tsara dia manome antoka ny fialan-tsasatra ary mitazona ny fiarovana ny rafitra.

Tsindrio ny code.

Ny fahadisoana

// user-api-v1.json - Original API response
{
  "id": 317,
  "name": "Mr Nimbus",
  "email": "nimbus@atlantis.com",
  "nationalities": "Brazilian,Canadian,Oceanic"
}

// Later changed to this without versioning:
{
  "userId": 317,
  "fullName": "Mr Nimbus", 
  "emailAddress": "nimbus@atlantis.com",
  "createdAt": "2018-12-09T18:30:00Z",
  "nationalities": ["Brazilian", "Canadian", "Oceanic"]
}

fetch('/api/users/317')
  .then(response => response.json())
  .then(user => {
    // This breaks when API changes field names and data types
    document.getElementById('name').textContent = user.name;
    document.getElementById('email').textContent = user.email;
    // This breaks when nationalities changes from string to array
    document.getElementById('nationalities').textContent 
      = user.nationalities;
  });

Ny marina

// user-api-v1.json - Version 1 (maintained)
{
  "id": 317,
  "name": "Mr Nimbus",
  "email": "nimbus@atlantis.com",
  "nationalities": "Brazilian,Canadian,Oceanic"
}

// user-api-v2.json - Version 2 
// (new structure, backward compatible)
{
  "id": 317,
  "userId": 317,
  "name": "Mr Nimbus",
  "fullName": "Mr Nimbus",
  "email": "nimbus@atlantis.com",
  "emailAddress": "nimbus@atlantis.com",
  "createdAt": "2018-12-09T18:30:00Z",
  "nationalities": "Brazilian,Canadian,Oceanic"
  "nationalitiesList": ["Brazilian", "Canadian", "Oceanic"]
}

// user-api-v3.json - Version 3 
// (new structure, backward not compatible)
{
  "userId": 317,
  "fullName": "Mr Nimbus",
  "emailAddress": "nimbus@atlantis.com",
  "createdAt": "2018-12-09T18:30:00Z",
  "nationalitiesList": ["Brazilian", "Canadian", "Oceanic"]
}

// client-code-versioned.js
const API_VERSION = 'v1';

fetch(`/api/${API_VERSION}/users/317`)
  .then(response => response.json())
  .then(user => {
    document.getElementById('name').textContent = user.name;
    document.getElementById('email').textContent = user.email;
    // V1 handles comma-separated string
    document.getElementById('nationalities').textContent
      = user.nationalities;
  });

// Or with content negotiation
fetch('/api/users/317', {
  headers: {
    'Accept': 'application/vnd.api+json;version=1'
  }
})
  .then(response => response.json())
  .then(user => {
    document.getElementById('name').textContent = user.name;
    document.getElementById('email').textContent = user.email;
    document.getElementById('nationalities').textContent 
      = user.nationalities;
  });

Ny famantarana

  • [x] Ny fametrahana antsasaky ny automatique

Azonao atao ny mahita io fahatsapana io rehefa mahita API izay manova ny anaran'ny sehatra, manala ny sehatra, na manova ny rafitra angona raha tsy manakana ny fifanarahana mivantana.


Jereo ny fampiharana mpanjifa izay mitsahatra aorian'ny fampiroboroboana API.


Jereo ny fehezan-dalàna tsy misy ny lohateny na ny famoahana ny URL.


Manara-maso ny rakitsoratra fahadisoana ho an'ny fiantraikany haingana amin'ny tsy fahombiazan'ny mpanjifa taorian'ny famoahana.

Ny taona ️

  • Ny APIs

Ny ambaratonga

  • [X] Ny fifanarahana

Nahoana no tena zava-dehibe ny fihaonambe ️

Tokony hitandrina ny faharetana ianaoNy taratasyeo amin'ny fifanarahana API sy ny fanantenan'ny mpanjifa.


Rehefa manaisotra izany ianaoNy fifanarahanaamin'ny fanovana ny API tsy misy versioning, dia manitsakitsaka ny fitsipika fototra fa ny mpanjifa dia afaka miankina amin'ny fifanarahana mifanaraka.


Manorina tsy fitoviana eo amin'ny zavatra tian'ny mpanjifa hahazo ary izay manome ny API ianao.


Izany dia mandika ny fifanarahana iray amin'ny iray eo amin'ny fampanantenana API sy ny fandefasana API, izay mitarika amin'ny tsy fahombiazan'ny rafitra sy ny fahaverezan'ny fitokisana.


Amin'ny alalan'ny famoahana ny fandaharana eo amin'ny API sy ny raharaham-barotra izay maneho azy, ny mpanjifa dia tsy afaka mifandray amin'ny rafitrao amin'ny fomba azo antoka.


Ity tsy fitovian-kevitra ity dia mitarika amin'ny fahadisoana, ny fialan-tsasatra, ny tsy fitokisana ary ny traikefa ratsy amin'ny mpampiasa.

Ny taranaka

Ny famokarana AI matetika dia mamorona io fahatsapana io rehefa mangataka azy ireo hanatsarana na hanatsarana ny APIs misy anao.


Mifantoka amin'ny fanatsarana ny API izy ireo tsy mandinika ny fifanarahana amin'ny farany.


Mila manoro hevitra mazava ianao ny fitaovana AI mba hitazonana ny anaran'ny sehatra misy anao ary hanampy ny versioning rehefa manao fanovana.


Matetika izy ireo dia mankafy ny famolavolana madio mihoatra noho ny fandriampahalemana raha tsy misyNy mazavaMilaza ny zavatra hafa.

Ny famantarana

Ny solosaina AI dia afaka manatsara ity fahatsapana ity rehefa manome torolàlana mazava momba ny sehatry ny versioning API ianao.


Tokony mangataka azy ireo mba hanatanterahana ny versioning semantic, hitazona ny fifanarahana mivantana, ary hamorona lalana fialan-tsasatra ho an'ny endri-javatra voavonjy.

Manao izany ianao!

Tsarovy: Manao fahadisoana maro ny mpanampy AI

Fanoloran-teny: Manao ny API versioning mba hisorohana ny fanovana

Fanoloran-teny: Manao ny API versioning mba hisorohana ny fanovana

Without Proper Instructions

With Specific Instructions

ChatGPT

ChatGPT

Claude

Claude

Perplexity

Perplexity

Copilot

Copilot

Gemini

Gemini

DeepSeek

DeepSeek

Meta AI

Meta AI

Grok

Grok

Qwen

Qwen

Ny chat

Ny chat

Ny renivohiny

Ny renivohiny

Ny fahadisoana

Ny fahadisoana

Ny mpamily

Ny mpamily

Ny Gemini

Ny Gemini

Ny fitadiavana

Ny fitadiavana

Ny tanjona

Ny tanjona

Ary ny

Ary ny

Ny

Ny

Ny fanapahan-kevitra

Tokony mandrakariva mamerina ny API ianao mba hisorohana ny fiovana tsy misy fiantraikany amin'ny fampiharana mpanjifa.


Na dia avy amin'ny dikan'ny voalohany aza.


Rehefa mitazona fifanarahana maharitra amin'ny alàlan'ny versioning tsara ianao, dia mamorona fitokisana amin'ny mpanjifa API ary mamela fandrosoana tsy tapaka ny rafitrao.


Ny fiovàna dia tsy azo atao, fa tsy tokony hanimba ny mpanjifanao izy ireo.


Mandritra izany fotoana izany dia manome dikan-teny amin'ny API ianao, mandinika tsara ary mifandray amin'ny fomba mialoha mba hisorohana ny tsy ilaina.

Mifandraisa amin'izy ireo

https://hackernoon.com/misusing-http-status-codes-wrecks-your-api-monitoring-and-client-logic

https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-iv-7sc3w8n

https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-xii

https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-xxii

https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-xxxiv

https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-xxxv

Ny tsy fisian'ny

Ny voankazo dia ny tenakoNy hevitra.

Ny trosa

Sary avyNandositra an'i Giancarlo RevolledoNyTsy misy


Ny API dia mandrakizay, noho izany dia mandinika azy ireo tsara

Ny API dia mandrakizay, noho izany dia mandinika azy ireo tsara

Ny Martin Fowler.


Ity lahatsoratra ity dia ampahany amin'ny Series CodeSmell.


L O A D I N G
. . . comments & more!

About Author

Maximiliano Contieri HackerNoon profile picture
Maximiliano Contieri@mcsee
I’m a sr software engineer specialized in Clean Code, Design and TDD Book "Clean Code Cookbook" 500+ articles written

HANG TAGS

ITY ARTICLE ITY NO NARESAKA TAMIN'NY...

Trending Topics

blockchaincryptocurrencyhackernoon-top-storyprogrammingsoftware-developmenttechnologystartuphackernoon-booksBitcoinbooks