2016-03-12 2 views
3

Я реорганизую большую процедуру, и теперь я получаю много мелких процедур, функции с параметрами партии передаются взад и вперед. И поскольку я хотел бы сохранить ту же самую/аналогичную производительность и рефакторинг, которые можно обслуживать, я пытаюсь понять, что лучше всего подходит, поэтому я не нарушаю код.Имеет ли значение параметр const, var, out?

Это является наиболее распространенным, как эти новые функции выглядят:

function ProcessA(const ProjName,ProjPath:string; 
    ProjID:integer; 
    var ProjDest:string):string; 

function ProcessB(const ProjName,ProjPath:string; 
    const ProjID,ProjHID,ProjGID:integer; 
    var ProjDest:string; 
    out ProjDelPath:string):string; 

Я читал много о сопзЬ, вар, из параметров. Должен ли я приказать им сначала все const, тогда все нормально, затем var и last out ...

Означает ли их порядок, вообще?


EDIT:

Чтобы выяснить, почему вопрос или если кто-то использует тот же это, я использую Refactor среды IDE/Extract Method особенность, которая делает хорошую работу, но это не имеет никакого смысла параметров, которые он устанавливает. Поэтому, когда я переупорядочивал и менял имена параметров, я видел проблему без стандартного порядка типов параметров.

+3

Порядок не имеет значения упрощенным способом. Но часто есть причины, по которым вы хотите, чтобы некоторые параметры отображались первыми. Например, вам могут потребоваться входные параметры перед выходными параметрами. Тебе решать. –

+3

Константы и значения параметров со значениями по умолчанию должны появляться в конце списка параметров. В противном случае вы можете сделать все, что захотите. –

+0

@DavidHeffernan Да, это была моя идея, сначала вход, затем смешанный (var) и последний. Я использую _Refactor/Extract method_, чтобы помочь мне в этом, и мне нужно сортировать параметры каждый раз, потому что он просто смешивает входные, выходные параметры, а не хорошо. Итак, я хотел иметь смысл и стандартизировать его. –

ответ

8

Порядок параметров не имеет значения, за одним исключением; Параметры по умолчанию (например, fn(AFloat: single; AInt:integer = 0): integer;), что означает, что вам не нужно ничего пропускать для AInt, если вы довольны значением по умолчанию. Эти параметры должны быть в конце списка параметров и могут быть опущены только с конца. Подробнее о параметрах here.

+0

Замечательно отметить, что я буду использовать это как разработано! –

Смежные вопросы