** Konvencija per konfigūraciją (COC) yra programinės įrangos projektavimo paradigma, kuria siekiama supaprastinti plėtrą naudojant iš anksto apibrėžtas prielaidas ir standartus, sumažinant sprendimų skaičių, kurį privalo priimti kūrėjai. Nors COC gali padidinti produktyvumą ir nuoseklumą, yra scenarijų, kai jis gali nepavykti arba būti mažiau efektyvus:
1. Lankstumo trūkumas **
Viena iš pagrindinių COC kritikos yra jo galimybė apriboti lankstumą. Aplinkoje, kur reikalingi unikalūs ar nestandartiniai sprendimai, griežtai laikantis konvencijų gali būti ribojančios. Pavyzdžiui, jei projektui reikalinga duomenų bazės schema, kuri nesilaiko įprastų įvardijimo konvencijų, būtina papildoma konfigūracija, kuri gali kompensuoti COC pranašumus [5] [4].
2. Konfliktai su kitais dizaino principais **
COC kartais gali prieštarauti kitiems projektavimo principams, tokiems kaip „aiškusis yra geresnis už netiesioginį“ principą iš Python zeno. Šis principas rodo, kad aiškios konfigūracijos yra geriau nei numanomos prielaidos, kurios gali sukelti painiavą ar netikėtą elgesį, jei ne gerai dokumentuota [9] [4].
3. Nestandartinių scenarijų sudėtingumas
Kalbėdamasis su sudėtingais ar nestandartiniais scenarijais, COC gali nepateikti reikiamo lankstumo efektyviai tvarkyti unikalius reikalavimus. Pvz., Sistemoje, kurioje reikia integruoti kelias duomenų bazes su skirtingomis schemų struktūromis, remiantis vien konvencijomis gali sukelti neefektyvumą ar papildomą sudėtingumą [4] [10].
4. Mokymosi kreivė ir įvaikinimas **
Įdiegti COC reikalauja tam tikro lygio susipažinimo su pačiais konvencijomis. Naujiems kūrėjams gali būti sudėtinga mokytis ir prisitaikyti prie šių konvencijų, ypač jei jie yra įpratę aiškesni konfigūracijos metodai. Tai gali padidinti mokymosi kreivę ir galimai trukdyti naujų komandos narių produktyvumui [1] [4].
5. Netiesioginės prielaidos ir dokumentacijos **
COC labai priklauso nuo numanomų prielaidų, pagrįstų nustatytomis konvencijomis. Jei šios prielaidos nėra gerai dokumentuotos ar suprantamos, tai gali sukelti nesusipratimus ar klaidas. Kūrėjai turi gerai suprasti konvencijas, kad galėtų jas efektyviai naudoti, o tai gali būti kliūtis bendradarbiavimo aplinkoje [10] [8].
6.
Kai kuriais atvejais kūrėjai gali per daug pasikliauti COC numatytomis įsipareigojimų neįvykdymais, visiškai nesuprasdami pagrindinių prielaidų. Tai gali sukelti netikėtą elgesį, jei įsipareigojimų neįvykdymai neatitinka konkrečių projekto poreikių. Pavyzdžiui, jei sistema pagal numatytuosius nustatymus įgyja tam tikrą duomenų bazės struktūrą, tačiau tikroji struktūra yra kitokia, norint nepaisyti šių numatytųjų nustatymų, reikia papildomos konfigūracijos [4] [11].
Apibendrinant galima pasakyti, kad nors konfigūracijos konvencija suteikia daug naudos produktyvumo ir nuoseklumo atžvilgiu, ji gali nepavykti arba būti mažiau veiksminga scenarijuose, kuriems reikalingas didelis lankstumas, sudėtingos konfigūracijos arba kai trūksta supratimo apie pagrindines konvencijas.
Citatos:[1] https://facilethings.com/blog/en/convention-over-configuration
[2] https://www.reddit.com/r/rails/comments/a68d7i/im_terrify_of_convention_over_configuration/
[3] https://www.devx.com/terms/convention-over-configuration/
[4] https://en.wikipedia.org/wiki/convention_over_configuration
[5] https://www.aspireedge.com/the-impact-of-convention-over-configuration-in-ruby-on-c-rails.html
[6] http://softwareengineering.vazexqi.com/files/pattern.html
[7] https://learn.microsoft.com/en-us/archive/msdn-magazine/2009/february/patterns-in-praktice-convention-over-configuration
[8] https://devopedia.org/convention-over-configuration
[9] https://softwareEngineering.stackexchange.com/questions/165649/is-convention-over-configuration-not-irulation-basic-programming-principles
[10] https://techblog.boozho.net/a-prlemlem-with-convention-over-configuration/
[11] https://stackoverflow.com/questions/71985512/convention-over-configuration-in-rails
[12] https://davewentzel.com/content/convention-over-configuration/