7 слов в названии метода! Ура, товарищи!
От: Философ Ад http://vk.com/id10256428
Дата: 01.12.15 11:44
Оценка:
Сегодня увидел метод с названием из семи слов!!!
Я счастлив

ЗЫ: кто больше!?
Всё сказанное выше — личное мнение, если не указано обратное.
Re: 7 слов в названии метода! Ура, товарищи!
От: fplab Россия http://fplab.h10.ru http://fplab.blogspot.com/
Дата: 01.12.15 11:50
Оценка: :))) :))
Здравствуйте, Философ, Вы писали:

Ф>Сегодня увидел метод с названием из семи слов!!!

Ф>Я счастлив

Ф>ЗЫ: кто больше!?

Ну, это не трудно:
int ОпределениеДальностиПолетаСоплиПриЧиханииБольногоГриппомЧитающегоВМетроКантаПоДорогеВПоликлинику (...) {
}

А Вам какой встретился?
Приходиться заниматься гадостью — зарабатывать на жизнь честным трудом (Б.Шоу)
Re: 7 слов в названии метода! Ура, товарищи!
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 01.12.15 12:18
Оценка: +1 :))) :))) :))) :))) :))) :)
Здравствуйте, Философ, Вы писали:

Ф>Сегодня увидел метод с названием из семи слов!!!

Ф>Я счастлив

Ф>ЗЫ: кто больше!?


Слабаки.

Вот как надо:

GetTextEffectCharacterIndexFromTextSourceCharacterIndex
Re: 7 слов в названии метода! Ура, товарищи!
От: Alex912  
Дата: 01.12.15 12:53
Оценка: +1 :))) :)))
Здравствуйте, Философ, Вы писали:

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


Re[2]: 7 слов в названии метода! Ура, товарищи!
От: Sinix  
Дата: 01.12.15 14:19
Оценка: 53 (1) :))) :)
Здравствуйте, gandjustas, Вы писали:


G>Вот как надо:

G>GetTextEffectCharacterIndexFromTextSourceCharacterIndex

Пхе!
FunctionPointerTypesAreEquivalentAssumingGenericMethodParametersAreEquivalentIfTheirIndicesMatch не хотите?

  больше трэша
FunctionPointerTypesAreEquivalentAssumingGenericMethodParametersAreEquivalentIfTheirIndicesMatch at TypeHelper, Microsoft.VisualStudio.ArchitectureTools.PEReader (15)
TypeDefOrRefOrSpecIsClassButNotValueTypeBaseClass at Reader, Microsoft.VisualStudio.TeamTest.TestGeneration.Cci (14)
ChangeMergeDynamicSnapshotJobScheduleWithJobNameForLateBoundComClients at MergePublication, Microsoft.SqlServer.Rmo (14)
ChangeMergeDynamicSnapshotJobScheduleWithJobIdForLateBoundComClients at MergePublication, Microsoft.SqlServer.Rmo (14)
ParameterListsAreEquivalentAssumingGenericMethodParametersAreEquivalentIfTheirIndicesMatch at TypeHelper, Microsoft.VisualStudio.ArchitectureTools.PEReader (14)
get_ArgumentOutOfRange_BatchSizeMustBeNoGreaterThanBoundedCapacity at Resource, System.Threading.Tasks.Dataflow (14)
ParametersAreEquivalentAssumingGenericMethodParametersAreEquivalentIfTheirIndicesMatch at TypeHelper, Microsoft.VisualStudio.ArchitectureTools.PEReader (13)
TypesAreEquivalentAssumingGenericMethodParametersAreEquivalentIfTheirIndicesMatch at TypeHelper, Microsoft.VisualStudio.ArchitectureTools.PEReader (13)
get_DescriptionAttributeLabelOutsidePlotAreaStyle_LabelOutsidePlotAreaStyle at SR, System.Web.DataVisualization (13)
get_DescriptionAttributeAnnotationPositionChangingEventArgs_AnnotationPositionChangingEventArgs at SR, System.Web.DataVisualization (13)
get_DescriptionAttributeLabelOutsidePlotAreaStyle_LabelOutsidePlotAreaStyle at SR, System.Windows.Forms.DataVisualization (13)
get_DescriptionAttributeAnnotationPositionChangingEventArgs_AnnotationPositionChangingEventArgs at SR, System.Windows.Forms.DataVisualization (13)
Trace_Event_Message_OnlineDeployment_ApplyingSettingsAndOptions_Starting_NoDatabase at SR, Microsoft.AnalysisServices.DeploymentEngine (12)
get_ExceptionThreeLineBreakNumberOfLinesInBreakFormatInvalid at SR, System.Web.DataVisualization (12)
get_ExceptionThreeLineBreakNumberOfLinesInBreakValueInvalid at SR, System.Web.DataVisualization (12)
get_ExceptionAxisScaleMinimumValueIsGreaterThenMaximumDataPoint at SR, System.Web.DataVisualization (12)
get_ExceptionThreeLineBreakNumberOfLinesInBreakFormatInvalid at SR, System.Windows.Forms.DataVisualization (12)
get_ExceptionThreeLineBreakNumberOfLinesInBreakValueInvalid at SR, System.Windows.Forms.DataVisualization (12)
get_ExceptionAxisScaleMinimumValueIsGreaterThenMaximumDataPoint at SR, System.Windows.Forms.DataVisualization (12)
get_NumberOfTheDiskWithTheStartOfTheCentralDirectory at ZipIOEndOfCentralDirectoryBlock, WindowsBase (12)
get_TotalNumberOfEntriesInTheCentralDirectoryOnThisDisk at ZipIOEndOfCentralDirectoryBlock, WindowsBase (12)
~EmbeddedBase<Microsoft::VisualStudio::PkgDef::CPkgDefManagement> at EmbeddedBase<Microsoft::VisualStudio::PkgDef::CPkgDefManagement>, Microsoft.VisualStudio.Settings (11)
!EmbeddedBase<Microsoft::VisualStudio::PkgDef::CPkgDefManagement> at EmbeddedBase<Microsoft::VisualStudio::PkgDef::CPkgDefManagement>, Microsoft.VisualStudio.Settings (11)
~EmbeddedBase<Microsoft::VisualStudio::PkgDef::CPkgDefManagement> at EmbeddedBase<Microsoft::VisualStudio::PkgDef::CPkgDefManagement>, Microsoft.VisualStudio.Settings (11)
!EmbeddedBase<Microsoft::VisualStudio::PkgDef::CPkgDefManagement> at EmbeddedBase<Microsoft::VisualStudio::PkgDef::CPkgDefManagement>, Microsoft.VisualStudio.Settings (11)
get_BadMetadataInExportTypeTableNoSuchAssemblyReference at ExceptionStrings, Microsoft.VisualStudio.TeamTest.TestGeneration.Cci (11)
get_BadMetadataInExportTypeTableNoSuchParentType at ExceptionStrings, Microsoft.VisualStudio.TeamTest.TestGeneration.Cci (11)
get_Trace_Event_Message_OnlineDeployment_ApplyingSettingsAndOptions_Done at SR, Microsoft.AnalysisServices.DeploymentEngine (11)
GetCimTypeFromDotNetValueOrThrowAnException at CimConverter, Microsoft.Management.Infrastructure (11)
get_AssociatedMetadataTypeTypeDescriptor_MetadataTypeContainsUnknownProperties at DataAnnotationsResources, System.ComponentModel.DataAnnotations (11)
get_EnumDataTypeAttribute_TypeNeedsToBeAnEnum at DataAnnotationsResources, System.ComponentModel.DataAnnotations (11)
get_ConvertToDateTimeOnlyForDateTimeOrString at Strings, System.Data.Linq (11)


Сделай сам (это к вопросу о "нафига linq?"
Автор: VladD2
Дата: 30.11.15
):
            var names =
                from assemblyName in assemblyNames.Skip(3)
                let assembly = TryLoad(assemblyName)
                where assembly != null && assembly.ImageRuntimeVersion == rv
                from t in TryGetTypes(assembly)
                from m in t.GetMethods(bf)
                where !m.Name.Contains(".")
                select new
                {
                    Name = m.Name,
                    Type = t.Name,
                    Assembly = assembly.GetName().Name,
                    Words = SplitWords(m.Name).Count()
                } into r
                orderby r.Words descending
                select r;

  весь код
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main()
        {
            // TODO: set your own
            var gacutil = new Process()
            {
                StartInfo = new ProcessStartInfo(@"C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools\gacutil.exe")
                {
                    Arguments = "/l",
                    RedirectStandardOutput = true,
                    UseShellExecute = false,
                }
            };
            gacutil.Start();

            var output = gacutil.StandardOutput;
            var assemblyNames = new List<string>();
            while (!output.EndOfStream)
            {
                var name = output.ReadLine();
                if (string.IsNullOrEmpty(name)) continue;

                assemblyNames.Add(name);
            }
            assemblyNames.RemoveAt(assemblyNames.Count - 1);

            var rv = typeof(int).Assembly.ImageRuntimeVersion;
            var bf = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance;
            var names =
                from assemblyName in assemblyNames.Skip(3)
                let assembly = TryLoad(assemblyName)
                where assembly != null && assembly.ImageRuntimeVersion == rv
                from t in TryGetTypes(assembly)
                from m in t.GetMethods(bf)
                where !m.Name.Contains(".")
                select new
                {
                    Name = m.Name,
                    Type = t.Name,
                    Assembly = assembly.GetName().Name,
                    Words = SplitWords(m.Name).Count()
                } into r
                orderby r.Words descending
                select r;

            foreach (var name in names.Take(100))
            {
                Console.WriteLine("{0:50} at {1}, {2} ({3})", name.Name, name.Type, name.Assembly, name.Words);
            }

            Console.WriteLine("Done.");
            Console.ReadKey();
        }

        private static Assembly TryLoad(string assemblyName)
        {
            try
            {
                return Assembly.ReflectionOnlyLoad(assemblyName);
            }
            catch
            {
                return null;
            }
        }

        private static Type[] TryGetTypes(Assembly assembly)
        {
            try
            {
                return assembly.GetTypes() ?? new Type[0];
            }
            catch
            {
                return new Type[0];
            }
        }

        private static IEnumerable<string> SplitWords(string name)
        {
            StringBuilder current = new StringBuilder();
            bool prevUpper = false;
            foreach (var nameChar in name)
            {
                bool upper = char.IsUpper(nameChar) || char.IsDigit(nameChar);
                if (upper && !prevUpper && current.Length > 0)
                {
                    yield return current.ToString();

                    current.Clear();
                }

                prevUpper = upper;
                current.Append(nameChar);
            }
            if (current.Length > 0)
            {
                yield return current.ToString();
            }
        }
}
Re: 7 слов в названии метода! Ура, товарищи!
От: kl Германия http://stardog.com
Дата: 01.12.15 15:30
Оценка: +3
Здравствуйте, Философ, Вы писали:

Ф>ЗЫ: кто больше!?


Самые длинные имена методов я видел в junit тестах. Что-то типа testThatThisSillyBugIsIndeedFixedAndDoesNotOccurUnderTheseExoticConditions.
no fate but what we make
Re[2]: 7 слов в названии метода! Ура, товарищи!
От: vsb Казахстан  
Дата: 01.12.15 16:18
Оценка: +3 -1
Здравствуйте, kl, Вы писали:

kl>Самые длинные имена методов я видел в junit тестах. Что-то типа testThatThisSillyBugIsIndeedFixedAndDoesNotOccurUnderTheseExoticConditions.


Пора бы им делать просто

test("This silly bug is indeed ...", () -> {
    ...
});


Всё же многословные идентификаторы ужасно читаются, хоть в camelCase-е, хоть в других нотациях (но в camelCase-е, конечно, хуже всего). Если возникает надобность в длинных названиях (а она в названии теста есть, это правда), нужно писать нормальный текст и не морочить людям голову. И читается лучше и вывод будет лучше.
Re[2]: 7 слов в названии метода! Ура, товарищи!
От: Философ Ад http://vk.com/id10256428
Дата: 01.12.15 16:45
Оценка:
Здравствуйте, kl, Вы писали:

kl>Здравствуйте, Философ, Вы писали:


Ф>>ЗЫ: кто больше!?


kl>Самые длинные имена методов я видел в junit тестах. Что-то типа testThatThisSillyBugIsIndeedFixedAndDoesNotOccurUnderTheseExoticConditions.


Это наверное потому, что у них DescriptionAttribute отсутствует
Всё сказанное выше — личное мнение, если не указано обратное.
Re[3]: 7 слов в названии метода! Ура, товарищи!
От: · Великобритания  
Дата: 01.12.15 21:34
Оценка:
Здравствуйте, Философ, Вы писали:

Ф> kl>Здравствуйте, Философ, Вы писали:


Ф> Ф>>ЗЫ: кто больше!?


Ф> kl>Самые длинные имена методов я видел в junit тестах. Что-то типа testThatThisSillyBugIsIndeedFixedAndDoesNotOccurUnderTheseExoticConditions.


Ф> Это наверное потому, что у них DescriptionAttribute отсутствует

И как оно будет выглядеть? Так что-ли?!
[Description("Test that this silly bug is indeed fixed and does not occur under these exotic conditions")]
public void testThatThisSillyBugIsIndeedFixedAndDoesNotOccurUnderTheseExoticConditions()
{
...
}

Нее, спасибо, не надо.
avalon/1.0.432
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[3]: 7 слов в названии метода! Ура, товарищи!
От: · Великобритания  
Дата: 01.12.15 21:38
Оценка:
Здравствуйте, vsb, Вы писали:

vsb> kl>Самые длинные имена методов я видел в junit тестах. Что-то типа testThatThisSillyBugIsIndeedFixedAndDoesNotOccurUnderTheseExoticConditions.

vsb> Пора бы им делать просто
vsb>
vsb> test("This silly bug is indeed ...", () -> {
vsb>     ...
vsb> });
vsb>

vsb> Всё же многословные идентификаторы ужасно читаются, хоть в camelCase-е, хоть в других нотациях (но в camelCase-е, конечно, хуже всего). Если возникает надобность в длинных названиях (а она в названии теста есть, это правда), нужно писать нормальный текст и не морочить людям голову. И читается лучше и вывод будет лучше.
Не надо. Тогда в IDEA перестанет работать копи-паст имени метода из отчёта CI или ещё откуда в Navigate to symbol, придётся использовать полнотекстовый поиск и разруливать как-то неоднозначности, если методы имеют одно имя у разных классов.
avalon/1.0.432
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[4]: 7 слов в названии метода! Ура, товарищи!
От: vsb Казахстан  
Дата: 02.12.15 03:34
Оценка: +1
Здравствуйте, ·, Вы писали:

vsb>> Всё же многословные идентификаторы ужасно читаются, хоть в camelCase-е, хоть в других нотациях (но в camelCase-е, конечно, хуже всего). Если возникает надобность в длинных названиях (а она в названии теста есть, это правда), нужно писать нормальный текст и не морочить людям голову. И читается лучше и вывод будет лучше.

·>Не надо. Тогда в IDEA перестанет работать копи-паст имени метода из отчёта CI или ещё откуда в Navigate to symbol, придётся использовать полнотекстовый поиск и разруливать как-то неоднозначности, если методы имеют одно имя у разных классов.

Почему перестанет? Доработают чуток и не перестанет. Также в отчёте можно (имхо и нужно) выводить имя файла и номер строки. В идеале это кликабельная ссылка вида source:///myproject/src/test/MyTest.java:123 на которую Idea вешает обработчик и при клике в браузере сразу переходит в нужное место.
Re[4]: 7 слов в названии метода! Ура, товарищи!
От: enji  
Дата: 02.12.15 05:55
Оценка:
Здравствуйте, ·, Вы писали:


·>И как оно будет выглядеть? Так что-ли?!

·>
·>[Description("Test that this silly bug is indeed fixed and does not occur under these exotic conditions")]
·>public void testBugId()
·>{
·>...
·>}
·>


где BugId — номер бага в нотации вашего трекера
Re[3]: 7 слов в названии метода! Ура, товарищи!
От: wildwind Россия  
Дата: 02.12.15 08:21
Оценка:
Здравствуйте, Sinix, Вы писали:

S> Пхе!

S> FunctionPointerTypesAreEquivalentAssumingGenericMethodParametersAreEquivalentIfTheirIndicesMatch не хотите?

Тесты не считаются.
Я привык, что в интернете можно найти ответ на любой вопрос. Я не люблю думать. Зачем думать, если всё уже придумано до меня? © Zenden@RSDN ::: avalon/1.0.442
Re[4]: 7 слов в названии метода! Ура, товарищи!
От: Sinix  
Дата: 02.12.15 08:30
Оценка:
Здравствуйте, wildwind, Вы писали:

W>Тесты не считаются.

Так это не тест.

P.S. Чтоб не спорить: ChangeMergeDynamicSnapshotJobScheduleWithJobNameForLateBoundComClients, так-то!
Re[5]: 7 слов в названии метода! Ура, товарищи!
От: · Великобритания  
Дата: 02.12.15 19:24
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>>> Всё же многословные идентификаторы ужасно читаются, хоть в camelCase-е, хоть в других нотациях (но в camelCase-е, конечно, хуже всего). Если возникает надобность в длинных названиях (а она в названии теста есть, это правда), нужно писать нормальный текст и не морочить людям голову. И читается лучше и вывод будет лучше.

vsb>·>Не надо. Тогда в IDEA перестанет работать копи-паст имени метода из отчёта CI или ещё откуда в Navigate to symbol, придётся использовать полнотекстовый поиск и разруливать как-то неоднозначности, если методы имеют одно имя у разных классов.
vsb>Почему перестанет? Доработают чуток и не перестанет. Также в отчёте можно (имхо и нужно) выводить имя файла и номер строки. В идеале это кликабельная ссылка вида source:///myproject/src/test/MyTest.java:123 на которую Idea вешает обработчик и при клике в браузере сразу переходит в нужное место.
Вот видишь... дорабатывать приходится, плугины к разным браузерам под разные операционки писать, головная боль одна. А так всё работает из коробки.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[5]: 7 слов в названии метода! Ура, товарищи!
От: · Великобритания  
Дата: 02.12.15 19:28
Оценка:
Здравствуйте, enji, Вы писали:

E>Здравствуйте, ·, Вы писали:



E>·>И как оно будет выглядеть? Так что-ли?!

E>·>
E>·>[Description("Test that this silly bug is indeed fixed and does not occur under these exotic conditions")]
E>·>public void testBugId()
E>·>{
E>·>...
E>·>}
E>·>


E>где BugId — номер бага в нотации вашего трекера

В порядочном проекте тесты не только для багов пишут. А в хорошем проекте количество тестов на порядки превышает количество багов.
Да и один баг может покрыться несколькими тестами — 1-к-1 отношения тут нет, вот и придётся изобретать ещё одну нотацию именования, ради чего — неясно.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[2]: 7 слов в названии метода! Ура, товарищи!
От: dr. Acula Украина  
Дата: 05.12.15 18:44
Оценка:
A>

A>Длина имени должна быть связана с длиной его области видимости. Переменным с крошечной областью видимости можно присваивать очень короткие имена, но у переменных с большей областью видимости имена должны быть длинными. … Таки образом, чем длиннее область видимости, тем более длинным и точным должно быть ее имя.


A>


Хихи-хаха а мне коллега такое задвигать на полном серьёзе начал.
И даже везде куда дотянулся начал применять.
В плюсовом проекте.
Re[3]: 7 слов в названии метода! Ура, товарищи!
От: R.K. Украина  
Дата: 20.12.15 16:18
Оценка: :))
Здравствуйте, Sinix, Вы писали:

S>Здравствуйте, gandjustas, Вы писали:



G>>Вот как надо:

G>>GetTextEffectCharacterIndexFromTextSourceCharacterIndex

S>Пхе!

S>FunctionPointerTypesAreEquivalentAssumingGenericMethodParametersAreEquivalentIfTheirIndicesMatch не хотите?

Какие-то куцие у вас сигнатуры функций.
Вот в Objective-C, из стандартного класса NSBitmapImageRep:
initWithBitmapDataPlanes:pixelsWide:pixelsHigh:bitsPerSample:samplesPerPixel:hasAlpha:isPlanar:colorSpaceName:bitmapFormat:bytesPerRow:bitsPerPixel:
You aren't expected to absorb this
Re: 7 слов в названии метода! Ура, товарищи!
От: Zenden Россия  
Дата: 06.01.16 03:08
Оценка: +1
Здравствуйте, Философ, Вы писали:

Ф>Сегодня увидел метод с названием из семи слов!!!

Ф>Я счастлив

Код должен сам себя комментировать. Не вижу в этом ничего плохого.
Re[2]: 7 слов в названии метода! Ура, товарищи!
От: Sni4ok  
Дата: 09.01.16 08:19
Оценка:
Здравствуйте, Zenden, Вы писали:

Z>Код должен сам себя комментировать.


богу программистов это он так должен?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.