=TEXT(LEFT(A1;FIND(" ";A1));REPT("0";FIND(" ";A1)-2)&"#")
=TEXT(LEFT(A1,FIND(" ",A1)),REPT("0",FIND(" ",A1)-2)&"#")
Предыдущие версии поднимали вопрос, где теряется место в конце.
Function LZERO(ZeroString As String) As String
LZERO = Split(ZeroString)(0)
End Function
Например. =LZERO(A1)
Что относительно того, чтобы использовать Дополнительные Методы.
Imports System.Runtime.CompilerServices
Module Extensions
<Extension()> _
Public Function TryGetString(ByVal row As IDataRecord, i As Integer) As String
If row.IsDBNull(i) Then
Return null
End If
Return row.GetString(i);
End Function
End Module
Затем можно просто записать:
row("Field") = oraData.TryGetString(4)
Это читает гладко и уменьшает цикломатическую сложность на Ваших функциях.
Разложитесь на функции, возможно, что-то вроде этого:
//Object Pascal
procedure UpdateIfNotNull( const fldName: String; fldIndex : integer );
begin
if oraData.IsDBNull( fldIndex ) then
row( fldName ) := oraData.GetString(fldIndex);
end;
Конечно, можно расширить подпись процедур так, чтобы "oraData" и "строка" могли, передал как параметры.
Первый вопрос: Почему Вы "подвешиваетесь" на CC? Это - инструмент, чтобы оценить, насколько плотный код, и эмпирическое правило должно быть "не слишком высоко cc числа".
Это, вероятно, поражает все они "ЕСЛИ" s и поднимает то число - поэтому сократите количество IFS путем вызывания функции переноса, которая извлекает данные из набора результатов, который обрабатывает пустой указатель, или измените запрос, таким образом, это не возвращается, аннулирует.
Следует иметь в виду, что аннулирует, предоставляют информацию и не бесполезны. Например, республиканец или демократ? использование пустого указателя не говорит никакой выбор.
Возможно осуществить рефакторинг если в отдельную служебную функцию для сокращения CC. Много функций или функция, полагающаяся на дифференцирование типа, могли бы потребоваться, чтобы обрабатывать различные типы БД (строка, интервал и т.д.)
Однако я утверждал бы, что любое решение приведет к меньшему количеству удобного в сопровождении или читаемого кода (т.е. Вы могли бы ухудшить другие метрики!) и был бы как QA позволять этому передавать согласно этому выравниванию.
Вы видели этот вопрос? Он спрашивает что-то подобное (но я думаю на более базовом уровне)..., но затем это означает ответы здесь не может быть большого количества справки.
Я определенно согласился бы с другими предложениями здесь: если существуют повторенные операторы, которые могут быть аккуратно упакованы в функции/процедуры, которые могли бы быть одним подходом для взятия, пока Вы только смещаете CC вокруг. Я не уверен, что Вы получили слишком много, если Вы перемещаетесь от одного proc с CC 35 к трем procs с CCS 15, 10, и 10. (Это не плохой первый шаг, но идеально Вы смогли бы упростить что-то на большем объеме для сокращения общего CC в той области системы.)