Ці ёсць які-небудзь прычыне ў праграме Java для спецыяльнага наймення для функцыі аргументаў?

Я хацеў бы ведаць, чаму я хацеў бы мець спецыяльныя прэфіксы для функцыі аргументаў, як «p_name», «p_age», «p_sex»? З аднаго боку, гэта дапамагае адрозніць параметр з лакальных зменных або палёў далей у целе функцыі, але гэта дапамагло б? З іншага боку, я не бачыў такія рэкамендацый наймення ў любым месцы, уключаючы канвенцыі мовы афіцыйнай Java. Калі ласка, парайце якія-небудзь прычыны для выкарыстання такой палітыкі наймення

5
Гэта версія ад венгерскай натацыі, як бескарысны, як сістэмы венгерскіх для даволі шмат па той жа прычыне (IntelliSense)
дададзена аўтар matte, крыніца

6 адказы

Вы маеце рацыю, адметныя зменныя з параметраў і палёў на першы погляд даволі шмат адзінай матывацыяй для гэтага. І гэта не вельмі добрая; калі ваш метад настолькі доўга, што такія намёкі памяці неабходныя, гэта занадта доўга, у першую чаргу. Існуе прычына, чаму гэта настойліва рэкамендуецца трымаць метады досыць малыя, што яны могуць быць прыняты ў цалкам у адзін погляд, і разуменне ролі ўсіх зменных, якія ўдзельнічаюць вялікая частка гэтага.

20
дададзена
+ Сучасныя Іды сапраўды выдаліць неабходнасць гэтага.
дададзена аўтар OJ., крыніца
Сінтаксіс афарбоўкі замяняе венгерскую натацыю.
дададзена аўтар Adam Lassek, крыніца
Іды таксама часта вылучыць поля па-рознаму, чым параметры і іншыя зменныя (Eclipse, робіць гэта па меншай меры). Я ўпэўнены, што я атрымліваю папярэджанне, а калі я, напрыклад, у інкубатары спробе ўсталяваць значэнне параметру, а не поле ( this.p = р супраць р = р )
дададзена аўтар Corey McKinnon, крыніца

Такая схема мае мала сэнсу па двух прычынах:

  • Вы павінны разлічваць на вашу IDE, каб забяспечыць сродкі для адрознівання параметраў ад іншых зменных, альбо праз IntelliSense падказкі або афарбоўку сінтаксісу.
  • Калі вы хочаце, каб у далейшым адрозніваць поля ад лакальных зменных/параметраў, вы можаце прэфікс іх гэтым. . Я лічу, што яго выкарыстанне да абмеркавання, аднак, па меншай меры, у выпадку Java гэта, як уяўляецца, з'яўляецца шырока распаўсюджанай практыкай.

Аднак, калі гэта рэалізуецца стандарт кадавання ў вашым праекце, вы можаце задаваць пытанні і абмяркоўваць, але ў рэшце рэшт не павінны выконваць яго, незалежна ад таго, наколькі бессэнсоўна гэта можа здацца.

3
дададзена
для пункта 2 яна таксама рэкамендуецца заўсёды выкарыстоўваць метады атрымання (у Java, па меншай меры), так што толькі зменныя імя dirrectly мясцовыя і параметры
дададзена аўтар matte, крыніца

Я падазраю, што асноўнай прычынай з'яўляецца мяккай формай OCD многіх праграмістаў ўражанае, што робіць сартаванне або робячы рэчы, як асобныя, ужо відавочна іншае адчуванне «права», нават калі яна нясе практычна ніякай практычнай карысці.

Іншы распаўсюджаны прыклад гэтага з'яўляецца маюць імёны ўсіх пералічэнняў з прэфіксам «Enum», і трымаць іх у асобным пакеце з імем «пераліку».

3
дададзена

Java дазваляе прысвоіць значэнне фармальных параметраў, напрыклад,

public int sum(int a, int b) {
    a = a + b;//valid but evil!
    return a;
}

Аднак, гэта дрэнная ідэя, так як праграмісты звычайна чакаюць атрымаць доступ да значэнняў, перададзеным метадзе. Схема наймення можа дапамагчы прадухіліць выпадковае маніпуляванне параметрамі. Але ёсць лепшы спосаб: зрабіць апошні параметр. Кампілятар не дазволіць прызначыць да канчатковага параметру, і я не бачу прычын, чаму вы павінны.

Адзіная прычына, каб не адставаць ад такога наймення, паслядоўнасць і, такім чынам, чытальнасць. Гэта, вядома, патрабуе, каб людзі ўжо прывыклі да Р- стылю прыстаўкі. Я асабіста лічу, што даданне такога прэфікса зніжае чытальнасць як гэтыя два знака, якія нясуць вельмі мала інфармацыі. Гэтыя сімвалы значна лепш правялі ў добрым чытаная імя.

Дарэчы, такія заданні не будуць мець уплыў за межамі выканання метаду, як Java выкарыстоўвае выклік семантыкі значэнняў для прымітываў і спасылак на аб'екты.

2
дададзена

Там няма падстаў выкарыстоўваць такія прэфіксы, так як Java выкарыстоўвае зацяненне палёў класаў. Выкарыстоўвайце <�моцны> гэта ключавое слова, і ваш код застаецца чытаным.

Я асабіста аддаю перавагу, каб дадаць «_» прэфікс для кожнага параметру. Карыснае з аўтаматычным завяршэннем. Калі я тыпу _ фільтруе спіс толькі параметры.

2
дададзена
Я не пярэчыў бы, што калі б можна было б аб'явіць поле такім чынам, каб патрабаваць выкарыстанне </гэтага кода> з ім, заўсёды. Я лічу, што гэта непрывабнае які мае ідэнтыфікатар неукрашенным часам называюць полем, а часам і да параметры, у залежнасці ад таго, які метад здараецца, выкарыстоўваючы яго. Выкарыстоўваючы розныя імёны дапаможа пазбегнуць якіх-небудзь пытанняў, ці быў наўмыснае выкарыстанне праграміста параметру, ці забыўся праграміст меў намер выкарыстоўваць поле, але гэта .
дададзена аўтар supercat, крыніца

Для большасці Java праграмістаў, адказ павінен быць «Не, няма ніякіх прычын, каб зрабіць гэта.» Асабліва прэфікс «p_» - вы знойдзеце некалькі прыхільнікаў для гэтага (і тыя, якія выкарыстоўваюць яго, як правіла, робіць гэта з-за звычкі ад іншых моў).

Сказаўшы гэта, я асабіста (аb) выкарыстоўваць функцыю ў Eclipse дадання параметра метаду прэфікса ( «а»), каб вярнуцца да кадуецца звычкам з Smalltalk (якія не могуць быць узбітымі з пунктам гледжання чытальнасці), дзе аргументы метаду, як правіла, з прэфіксам з артыкулам «а» або «», каб паказаць іх больш часовы характар ​​(у адрозненне ад класа або зменных асобніка). Прыкладамі з'яўляюцца aString (таму што метад працуе на <�ет> а Радок, якая перадаецца ў, а не на некалькі больш сталай зменнай асобніка аднаго, anElement або «someAccounts» (для калекцыі) і г.д. Відавочна, што большасць не-Smalltalkers, верагодна, ні патураць, ні зразумець гэта idiosynchrasy ;-) але робіць дадаць чытальнасць пры правільным выкарыстанні і, калі вы прывыклі да гэта, гэта дапамагае сказаць параметры метаду асобна ад іншых тыпаў зменных (так, я ведаю, што большасць Іды зрабіць гэта для вас, але вы не можаце заўсёды спадзявацца на код, праглядваемыя у іх).

Звярніце ўвагу, што я не размясціць гэты адказ, каб пераўтварыць усе не-Smalltalkers, а проста прапанаваць альтэрнатыву левага поля, каб з дапамогай гэтага спосабу наймення аргументаў, якія могуць быць цікавыя для некаторых.

1
дададзена