Re[12]: https://github.com/aplib/PathInfo.cs#pathinfocs
От: grosborn  
Дата: 22.06.13 05:43
Оценка:
G>>Тут ты неправ. Для читабельности кода строка начинающаяся с Enumerable.Combine( и Path.Combina( сильно вредит. Строка должна начинаться со смысловой нагрузки сужающей контекст, а не с глобального метода понять который мы можем только прочитав его аргументы.
G>>Начало выражения Enumerable.Combine( не сужает контекст выбора и для понимания и для подсказки автовыбора, а начало выражения с первого аргумента сужает. Так что тут ты объективно не прав.

K>Чуть отвлекись от программинга, взгляни на проблему шире, с другой точки зрения.

K>Когда мы видим математическое выражение 2 + 3, то часто так и произносим: "два плюс три". Но часто говорим по-другому: "сложить два и три". Ведь так? Объективно? Теперь переведём второе выражение в код: сложить(2, 3), то есть Path.Combine...

Часто говорят "сложить два плюс три", что как бэ намекает.

Зачем мне отвлекаться? Это у вас в голове префиксная нотация сидит. Она не является общепринятой именно по тем причинам что я указал, начинается с знака операции, а не аргумента, и сложнее для чтения и понимания результата, акцентирует на операции. Общепринятая же форма 5 − (6 * 7). А есть еще такая * − 5 6 7. Если тебе нравится последняя форма записи, это не значит учто она должна быть у всех, большинство предпочитает инфиксную.
Префиксная запись имеет смысл только в случае когда операция для понимания важнее чем аргумент и она одна в строке.
Забанен на рсдн за применение слова "Маргинал"
Re[12]: https://github.com/aplib/PathInfo.cs#pathinfocs
От: grosborn  
Дата: 22.06.13 06:05
Оценка:
Здравствуйте, samius, Вы писали:

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


S>>>И для него достаточно лишь "выпрямить" SpecialFolders.

S>>>Понятно, что можно сэкономить за счет SpecialFolders.LocalApplicatoinData.Combine("Kotonoha"), но я не поклонник таких экономий. К слову сказать, enumerable1.Combine(enumerable2) мне тоже не нравится и я часто пишу Enumerable.Combine(enumerable1, enumerable2).


G>>Тут ты неправ. Для читабельности кода строка начинающаяся с Enumerable.Combine( и Path.Combina( сильно вредит. Строка должна начинаться со смысловой нагрузки сужающей контекст, а не с глобального метода понять который мы можем только прочитав его аргументы.

G>>Начало выражения Enumerable.Combine( не сужает контекст выбора и для понимания и для подсказки автовыбора, а начало выражения с первого аргумента сужает. Так что тут ты объективно не прав.

Path.Combine не сужает контекст и не дает точку выбора. Мы оперируем аргументами, а не операциями, поскольку вариативность аргументов больше вариативности операций. Префиксная форма записи понимается только по прочтению всего выражения совокупно, а инфиксная по прочтению части выражения. А самой удобной кому-то может показаться вообще постфиксная в которой операции вообще в конце стоят. Поняли аргументы и только после этого применяем операции. А вы выбрали вообще самый непопулярный и неудобный вариант, префиксную. И привыкли к ней. Ну пусть, но только отстаивать свою дремучесть не нужно.


S>не понял в чем я не прав. Path.Combine прекрасно сужает контекст. Что бы понять, что он делает, вовсе не обязательно читать аргументы.

S>Автовыбор меня мало беспокоит, т.к. я код больше читаю чем пишу.
S>Повторюсь. Путь.Комбинируйся с другим путем для меня — порно. Так же как и Путь.КопируйФайл(другойПуть). Так же как и объект.Сравнись(другойОбъект).
S>Вот путь / другойПуть — это хорошо. Но ради этого не стоит писать столько кода. Префиксная запись не сильно хуже в данном случае.
Забанен на рсдн за применение слова "Маргинал"
Re[13]: https://github.com/aplib/PathInfo.cs#pathinfocs
От: samius Япония http://sams-tricks.blogspot.com
Дата: 22.06.13 06:10
Оценка:
Здравствуйте, grosborn, Вы писали:

G>Часто говорят "сложить два плюс три", что как бэ намекает.

Я такое слышу не часто. Либо "два плюс три", либо "сложить 2 и 3".

G>Зачем мне отвлекаться? Это у вас в голове префиксная нотация сидит. Она не является общепринятой именно по тем причинам что я указал, начинается с знака операции, а не аргумента, и сложнее для чтения и понимания результата, акцентирует на операции. Общепринятая же форма 5 − (6 * 7). А есть еще такая * − 5 6 7. Если тебе нравится последняя форма записи, это не значит учто она должна быть у всех, большинство предпочитает инфиксную.

G>Префиксная запись имеет смысл только в случае когда операция для понимания важнее чем аргумент и она одна в строке.
Предлагаю разделять общепринятую инфиксную запись арифметических операций и общепринятую префиксную запись вызова функций. Все-таки арифметика файловых путей не вполне очевидна и не вполне очевидно использование операции деления для этой арифметики. А Path.Combine как бы намекает.
Запись "var p = p1 / p2" вне контекста вообще теряет смысл комбинирования путей.
Re[13]: https://github.com/aplib/PathInfo.cs#pathinfocs
От: samius Япония http://sams-tricks.blogspot.com
Дата: 22.06.13 06:22
Оценка:
Здравствуйте, grosborn, Вы писали:

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


G>Path.Combine не сужает контекст и не дает точку выбора.

Можно подробнее?
G>Мы оперируем аргументами, а не операциями, поскольку вариативность аргументов больше вариативности операций.
Мы — это кто? Я вполне себе могу оперировать операциями и в том числе операциями в качестве аргументов других операций.
G>Префиксная форма записи понимается только по прочтению всего выражения совокупно, а инфиксная по прочтению части выражения.
Откуда это следует?
G>А самой удобной кому-то может показаться вообще постфиксная в которой операции вообще в конце стоят.
Кому-то может.
G>Поняли аргументы и только после этого применяем операции. А вы выбрали вообще самый непопулярный и неудобный вариант, префиксную. И привыкли к ней. Ну пусть, но только отстаивать свою дремучесть не нужно.
Многие привыкли к префиксной. Ты же не пишешь 5 max 3. Или пишешь? Если пишешь max(5, 3) — значит так же дремуч. Или может твоя дремучесть избирательна? Ведь суть + и max как операций не сильно отличается. Обе принимают аргументы и возвращают результат. Так почему + используют инфиксно, а max — префиксно?
Re[14]: https://github.com/aplib/PathInfo.cs#pathinfocs
От: grosborn  
Дата: 22.06.13 06:25
Оценка:
S>Запись "var p = p1 / p2" вне контекста вообще теряет смысл комбинирования путей.

Вообще-то вне контекста любое такое выражение теряет смысл.
С другой стороны, "var i = i1 + i2" это вообще сложение или конкатенация? По правильному сложение, ибо i это должно быть целое. А "var p = p1 / p2" p это должна быть адресная арифметика, в которое вроде бы / нету, что дает нам правильное направление понимания. Так что опять промахнулся ты.
Забанен на рсдн за применение слова "Маргинал"
Re[15]: https://github.com/aplib/PathInfo.cs#pathinfocs
От: samius Япония http://sams-tricks.blogspot.com
Дата: 22.06.13 06:34
Оценка:
Здравствуйте, grosborn, Вы писали:

S>>Запись "var p = p1 / p2" вне контекста вообще теряет смысл комбинирования путей.


G>Вообще-то вне контекста любое такое выражение теряет смысл.

G>С другой стороны, "var i = i1 + i2" это вообще сложение или конкатенация? По правильному сложение, ибо i это должно быть целое. А "var p = p1 / p2" p это должна быть адресная арифметика, в которое вроде бы / нету, что дает нам правильное направление понимания. Так что опять промахнулся ты.
Это ты промахнулся с теорией о том что прочтение аргумента сужает контекст. Вот ты прочитал аргумент, а контекст угадываешь. В то время как String.Concat(i1, i2) снимает вообще все вопросы.
Re[14]: https://github.com/aplib/PathInfo.cs#pathinfocs
От: grosborn  
Дата: 22.06.13 07:01
Оценка:
G>>Path.Combine не сужает контекст и не дает точку выбора.
S>Можно подробнее?

Ну вот написал ты Path.Combine(, что тебе дает редактор в качестве подсказки для выбора? Ага, варианты вызова этого Path.Combine(, а зачем оно тут надо? Операция простая, зачем тут подсказка что у комбине может быть три строковых аргумента или четыре?
Ну вот написал ты Path.Combine(, что это дает для поинимания алгоритма? А ничего. Мы оперируем сущностями, операции суть вспомогательные вещи. В общем случае важнее ЧТО, а не КАК.

Абстрактные примеры с алгеброй (2 + 3) тут не очень подходят, потому что сказав

2

мы тоже не сужаем контекст.
А если ты написал именованный аргумент

temp_path

У тебя есть сужение контекста на уровне возможного применения операции, -> появляется контекстная подсказка автовыбора операции.
У тебя есть сужение контекста на проблемном уровне для понимания, ты выбрал какой-то конкретный фолдер, файловый путь.
Появляются ват такие возможности оптимизации кода:



G>>Мы оперируем аргументами, а не операциями, поскольку вариативность аргументов больше вариативности операций.

S>Мы — это кто? Я вполне себе могу оперировать операциями и в том числе операциями в качестве аргументов других операций.

Пример выше

G>>Префиксная форма записи понимается только по прочтению всего выражения совокупно, а инфиксная по прочтению части выражения.

S>Откуда это следует?

То же пример

G>>Поняли аргументы и только после этого применяем операции. А вы выбрали вообще самый непопулярный и неудобный вариант, префиксную. И привыкли к ней. Ну пусть, но только отстаивать свою дремучесть не нужно.

S>Многие привыкли к префиксной. Ты же не пишешь 5 max 3. Или пишешь? Если пишешь max(5, 3) — значит так же дремуч. Или может твоя дремучесть избирательна? Ведь суть + и max как операций не сильно отличается. Обе принимают аргументы и возвращают результат. Так почему + используют инфиксно, а max — префиксно?

max на самом деле это операция подытоживания, агрегирования результата выполнения более простых рядовых операций или перечисления. И в этом смысле она заслужила один балл для продвижения (из инфикса в префикс или постфикс), как чуть-чуть нерядовая. Path.Combine же самая рядовая операция в операциях с файловым путем и ее место в инфиксе.
Забанен на рсдн за применение слова "Маргинал"
Re[16]: https://github.com/aplib/PathInfo.cs#pathinfocs
От: grosborn  
Дата: 22.06.13 07:08
Оценка:
S>>>Запись "var p = p1 / p2" вне контекста вообще теряет смысл комбинирования путей.

G>>Вообще-то вне контекста любое такое выражение теряет смысл.

G>>С другой стороны, "var i = i1 + i2" это вообще сложение или конкатенация? По правильному сложение, ибо i это должно быть целое. А "var p = p1 / p2" p это должна быть адресная арифметика, в которое вроде бы / нету, что дает нам правильное направление понимания. Так что опять промахнулся ты.
S>Это ты промахнулся с теорией о том что прочтение аргумента сужает контекст. Вот ты прочитал аргумент, а контекст угадываешь. В то время как String.Concat(i1, i2) снимает вообще все вопросы.

Так ведь пример получился хороший. В итоге я буду писать var s = s1 + s2; (и var p = p1 / p2. А ты будешь писать var i = String.Concat(i1, i2); и никто тебя не переубедит писать по другому.
Забанен на рсдн за применение слова "Маргинал"
Re[17]: https://github.com/aplib/PathInfo.cs#pathinfocs
От: grosborn  
Дата: 22.06.13 07:13
Оценка:
Что меня удивляет, так это почему меня местные бандерлоги не заминусовали? Вроде бы пишу разумные вещи. Загадка.
Забанен на рсдн за применение слова "Маргинал"
Re[15]: https://github.com/aplib/PathInfo.cs#pathinfocs
От: samius Япония http://sams-tricks.blogspot.com
Дата: 22.06.13 07:25
Оценка:
Здравствуйте, grosborn, Вы писали:

G>>>Path.Combine не сужает контекст и не дает точку выбора.

S>>Можно подробнее?

G>Ну вот написал ты Path.Combine(, что тебе дает редактор в качестве подсказки для выбора? Ага, варианты вызова этого Path.Combine(, а зачем оно тут надо? Операция простая, зачем тут подсказка что у комбине может быть три строковых аргумента или четыре?

G>Ну вот написал ты Path.Combine(, что это дает для поинимания алгоритма? А ничего. Мы оперируем сущностями, операции суть вспомогательные вещи. В общем случае важнее ЧТО, а не КАК.
И Path.Combine и "/" одинакого подробно говорят о том, КАК. Точнее одинакого не говорят. А о том, ЧТО именно нужно сделать с аргументами, больше говорит Path.Combine.
Да, я пишу не для редактора, а для себя. Потому, даст он мне подсказку, или нет — это вопрос десятый. Кстати, по поводу "/" не даст.

G>Абстрактные примеры с алгеброй (2 + 3) тут не очень подходят, потому что сказав


G>2


G>мы тоже не сужаем контекст.

G>А если ты написал именованный аргумент

G>temp_path


G>У тебя есть сужение контекста на уровне возможного применения операции, -> появляется контекстная подсказка автовыбора операции.

и что, -> вывалит операцию + для целого числа?
G>У тебя есть сужение контекста на проблемном уровне для понимания, ты выбрал какой-то конкретный фолдер, файловый путь.
G>Появляются ват такие возможности оптимизации кода:
Я сужаю контекст другим способом. Я указываю что я буду именно копировать, а потом, по каким путям.

S>>Мы — это кто? Я вполне себе могу оперировать операциями и в том числе операциями в качестве аргументов других операций.


G>Пример выше

Не обнаружил

G>>>Префиксная форма записи понимается только по прочтению всего выражения совокупно, а инфиксная по прочтению части выражения.

S>>Откуда это следует?

G>То же пример

не пойму, о каком примере речь.

S>>Многие привыкли к префиксной. Ты же не пишешь 5 max 3. Или пишешь? Если пишешь max(5, 3) — значит так же дремуч. Или может твоя дремучесть избирательна? Ведь суть + и max как операций не сильно отличается. Обе принимают аргументы и возвращают результат. Так почему + используют инфиксно, а max — префиксно?


G>max на самом деле это операция подытоживания, агрегирования результата выполнения более простых рядовых операций или перечисления.

"+" — такая же операция подытоживания и агрегирования, как и max
G>И в этом смысле она заслужила один балл для продвижения (из инфикса в префикс или постфикс), как чуть-чуть нерядовая. Path.Combine же самая рядовая операция в операциях с файловым путем и ее место в инфиксе.
Так дело в "рядовости"? Ну я же говорил, избирательная "дремучесть". Теперь вижу что избирательность основана на рядовости. И видимо, по-твоему max это не рядовая операция для аргументов, а копирование файлов — рядовая для путей. Интересно
Re[17]: https://github.com/aplib/PathInfo.cs#pathinfocs
От: samius Япония http://sams-tricks.blogspot.com
Дата: 22.06.13 07:28
Оценка:
Здравствуйте, grosborn, Вы писали:

S>>>>Запись "var p = p1 / p2" вне контекста вообще теряет смысл комбинирования путей.


G>>>Вообще-то вне контекста любое такое выражение теряет смысл.

G>>>С другой стороны, "var i = i1 + i2" это вообще сложение или конкатенация? По правильному сложение, ибо i это должно быть целое. А "var p = p1 / p2" p это должна быть адресная арифметика, в которое вроде бы / нету, что дает нам правильное направление понимания. Так что опять промахнулся ты.
S>>Это ты промахнулся с теорией о том что прочтение аргумента сужает контекст. Вот ты прочитал аргумент, а контекст угадываешь. В то время как String.Concat(i1, i2) снимает вообще все вопросы.

G>Так ведь пример получился хороший. В итоге я буду писать var s = s1 + s2; (и var p = p1 / p2. А ты будешь писать var i = String.Concat(i1, i2); и никто тебя не переубедит писать по другому.

Ну почему же, обычно я конкатенирую строки через "+" (когда их не сильно много). Я просто указал на то что String.Concat убирает вопросы, которые может оставить "+".
Re[16]: https://github.com/aplib/PathInfo.cs#pathinfocs
От: grosborn  
Дата: 22.06.13 08:16
Оценка:
S>Так дело в "рядовости"? Ну я же говорил, избирательная "дремучесть". Теперь вижу что избирательность основана на рядовости. И видимо, по-твоему max это не рядовая операция для аргументов, а копирование файлов — рядовая для путей. Интересно

Насчет файловых операций неоднозначно. Где-то удобнее написать так, что допустимо в моей нотации:

File.Copy(path1 / filename1, path2 / filename2);

а где-то так:

(path1 / filename1) .Rename(filename2);
или
file1.Rename(filename2);

а не

File.Move(path1 / filename1, path2 / filename2);
Забанен на рсдн за применение слова "Маргинал"
Re[18]: https://github.com/aplib/PathInfo.cs#pathinfocs
От: grosborn  
Дата: 22.06.13 08:18
Оценка:
G>>Так ведь пример получился хороший. В итоге я буду писать var s = s1 + s2; (и var p = p1 / p2. А ты будешь писать var i = String.Concat(i1, i2); и никто тебя не переубедит писать по другому.
S>Ну почему же, обычно я конкатенирую строки через "+" (когда их не сильно много). Я просто указал на то что String.Concat убирает вопросы, которые может оставить "+".


А оно надо убирать какие-то неизвестные мне вопросы через String.Concat()? Я не помню ни одного случая необходимости String.Concat(). Оно несомненно где-то было, но как-то обходился без этого. Хотя разработчики языка конечно могли пойти по твоему пути и убрать это некошерные плюсики для конкатенации строк.
Забанен на рсдн за применение слова "Маргинал"
Re[17]: https://github.com/aplib/PathInfo.cs#pathinfocs
От: samius Япония http://sams-tricks.blogspot.com
Дата: 22.06.13 08:56
Оценка:
Здравствуйте, grosborn, Вы писали:

S>>Так дело в "рядовости"? Ну я же говорил, избирательная "дремучесть". Теперь вижу что избирательность основана на рядовости. И видимо, по-твоему max это не рядовая операция для аргументов, а копирование файлов — рядовая для путей. Интересно


G>Насчет файловых операций неоднозначно. Где-то удобнее написать так, что допустимо в моей нотации:


G>File.Copy(path1 / filename1, path2 / filename2);


G>а где-то так:


G>(path1 / filename1) .Rename(filename2);

G>или
G>file1.Rename(filename2);

G>а не


G>File.Move(path1 / filename1, path2 / filename2);


Вопрос не удобства, а семантики. В одном случае идет обращение к методам, выполняющим файловые операции. В другом случае обращение происходит к аргументу (пути) о том что надов выполнить копирование файла.
path.Copy(..) примерно так же как и str.SendEmail(sender).

По поводу деления путей: Операция деления не определена ни для строк, ни для путей. Ты пользуешься тем, что слэш является альтернативным разделителем. Но семантика-то у операции "слэш" — именно деление. Можешь обвинять меня в дремучести, но это придумал не я.
Можешь использовать слэш для комбинирования путей, я могу использовать слэш для комбинирования путей, но обвинять людей в дремучести только потому что они не хотят использовать слэш для комбинирования путей — это немного за рамками.

Еще один момент: семантика операции комбинирования путей гораздо сложнее, чем просто поставить разделитель между двумя частями. Потому слэш не может в достаточной мере отражать суть.
Re[19]: https://github.com/aplib/PathInfo.cs#pathinfocs
От: samius Япония http://sams-tricks.blogspot.com
Дата: 22.06.13 08:59
Оценка:
Здравствуйте, grosborn, Вы писали:

G>>>Так ведь пример получился хороший. В итоге я буду писать var s = s1 + s2; (и var p = p1 / p2. А ты будешь писать var i = String.Concat(i1, i2); и никто тебя не переубедит писать по другому.

S>>Ну почему же, обычно я конкатенирую строки через "+" (когда их не сильно много). Я просто указал на то что String.Concat убирает вопросы, которые может оставить "+".

G>А оно надо убирать какие-то неизвестные мне вопросы через String.Concat()? Я не помню ни одного случая необходимости String.Concat(). Оно несомненно где-то было, но как-то обходился без этого. Хотя разработчики языка конечно могли пойти по твоему пути и убрать это некошерные плюсики для конкатенации строк.

И еще раз другими словами. Я не утверждаю что оно кому-то надо. Я показываю разницу в понимании выражения с String.Concat и выражении с "+". И это противоречит твоим утверждениям о том что для того что бы понять суть выражения в префиксной нотации, нужно прочитать аргументы. Ровно наоборот. Что бы понять что происходит между s1 и s2, надо не только прочитать аргументы, а и определить типы выражений в аргументах. Только тогда можно будет с уверенностью говорить о том, что именно происходит под знаком "+". В то время как String.Concat указывает на это явно.
Re[20]: https://github.com/aplib/PathInfo.cs#pathinfocs
От: grosborn  
Дата: 22.06.13 09:40
Оценка:
G>>>>Так ведь пример получился хороший. В итоге я буду писать var s = s1 + s2; (и var p = p1 / p2. А ты будешь писать var i = String.Concat(i1, i2); и никто тебя не переубедит писать по другому.
S>>>Ну почему же, обычно я конкатенирую строки через "+" (когда их не сильно много). Я просто указал на то что String.Concat убирает вопросы, которые может оставить "+".

G>>А оно надо убирать какие-то неизвестные мне вопросы через String.Concat()? Я не помню ни одного случая необходимости String.Concat(). Оно несомненно где-то было, но как-то обходился без этого. Хотя разработчики языка конечно могли пойти по твоему пути и убрать это некошерные плюсики для конкатенации строк.

S>И еще раз другими словами. Я не утверждаю что оно кому-то надо. Я показываю разницу в понимании выражения с String.Concat и выражении с "+". И это противоречит твоим утверждениям о том что для того что бы понять суть выражения в префиксной нотации, нужно прочитать аргументы. Ровно наоборот.

Да с какого? String.Concat( без аргументов ты не можешь прочитать, ибо это знание не о том что ты пишешь не о твоем коде совсем.

S>Что бы понять что происходит между s1 и s2, надо не только прочитать аргументы, а и определить типы выражений в аргументах. Только тогда можно будет с уверенностью говорить о том, что именно происходит под знаком "+". В то время как String.Concat указывает на это явно.


String.Concat без аргументов указывает на String.Concat, то есть фактически ни на что не указывает и никому никогда не нужно. Поэтому от него отказались в пользу +. Знание которое содержится в String.Concat не нужно тащить в код, так же как и миллион других вещей, знание о регистрах процессора или времени выполнения. Потому что важна здесь не операция, она может быть только одна, а важны аргументы.

s1 уже указывает на твою предметную область

s1 + уточняет
s1 + s2 понимаемо
s1 + s2 + s3 читаем дольше сохраняя контекст

твой вариант

File.Move( — ???
File.Move(Path.Combine( — ???
File.Move(Path.Combine(path1 — Петрович???
File.Move(Path.Combine(path1, file1) — Петровича чемодан, что с ним? А, вспомнил, куда везем?
File.Move(Path.Combine(path1, file1), path3); — а-а-а, так вот оно как...

мой вариант

path1 — Петрович???
path1 / file1 — Петровича чемодан
(path1 / file1) .FileMove( — куда везем?
(path1 / file1) .FileMove(path3); — Ну дык эта понятно...
Забанен на рсдн за применение слова "Маргинал"
Re[21]: https://github.com/aplib/PathInfo.cs#pathinfocs
От: samius Япония http://sams-tricks.blogspot.com
Дата: 22.06.13 10:01
Оценка:
Здравствуйте, grosborn, Вы писали:

S>>И еще раз другими словами. Я не утверждаю что оно кому-то надо. Я показываю разницу в понимании выражения с String.Concat и выражении с "+". И это противоречит твоим утверждениям о том что для того что бы понять суть выражения в префиксной нотации, нужно прочитать аргументы. Ровно наоборот.


G>Да с какого? String.Concat( без аргументов ты не можешь прочитать, ибо это знание не о том что ты пишешь не о твоем коде совсем.

Как это не могу прочитать? Могу. И если String.Concat написано в моем коде, то то что я прочитаю будет знанием о моем коде.

S>>Что бы понять что происходит между s1 и s2, надо не только прочитать аргументы, а и определить типы выражений в аргументах. Только тогда можно будет с уверенностью говорить о том, что именно происходит под знаком "+". В то время как String.Concat указывает на это явно.


G>String.Concat без аргументов указывает на String.Concat, то есть фактически ни на что не указывает и никому никогда не нужно. Поэтому от него отказались в пользу +. Знание которое содержится в String.Concat не нужно тащить в код, так же как и миллион других вещей, знание о регистрах процессора или времени выполнения. Потому что важна здесь не операция, она может быть только одна, а важны аргументы.

Как это операция может быть только одна? Посмотри сколько операций над строками.
А + победил Concat по паре простых причин — он значительно короче и понимается компилятором.

G>s1 уже указывает на твою предметную область

не указывает.

G>s1 + уточняет

G>s1 + s2 понимаемо
G>s1 + s2 + s3 читаем дольше сохраняя контекст

G>твой вариант


G>File.Move( — ???

Уже понятно, что перемещаем файл. Если ты этого не понимаешь на этой стадии, то мне жаль.
G>File.Move(Path.Combine( — ???
G>File.Move(Path.Combine(path1 — Петрович???
G>File.Move(Path.Combine(path1, file1) — Петровича чемодан, что с ним? А, вспомнил, куда везем?
G>File.Move(Path.Combine(path1, file1), path3); — а-а-а, так вот оно как...


G>мой вариант


G>path1 — Петрович???

G>path1 / file1 — Петровича чемодан
G>(path1 / file1) .FileMove( — куда везем?
G>(path1 / file1) .FileMove(path3); — Ну дык эта понятно...
Может тебе эта, так еще понятнее было бы?
(стакан / чай).Мешать(ложка)
Re[22]: https://github.com/aplib/PathInfo.cs#pathinfocs
От: grosborn  
Дата: 22.06.13 10:13
Оценка:
S>(стакан / чай).Мешать(ложка)

Твой вариант будет

Движения.Мешать(Операции.Налить(стакан, чай), ложка)

Где внимание акцентировано на операциях. В итоге получаем театральную чайную церемонию и чай из пакетика. Если нам важна церемония, то это хорошо, если важен чай, то это плохо. Если важен чай, то его и нужно ставить на первое место.
Забанен на рсдн за применение слова "Маргинал"
Re[23]: https://github.com/aplib/PathInfo.cs#pathinfocs
От: samius Япония http://sams-tricks.blogspot.com
Дата: 22.06.13 10:22
Оценка:
Здравствуйте, grosborn, Вы писали:

S>>(стакан / чай).Мешать(ложка)


G>Твой вариант будет


G>Движения.Мешать(Операции.Налить(стакан, чай), ложка)


G>Где внимание акцентировано на операциях. В итоге получаем театральную чайную церемонию и чай из пакетика. Если нам важна церемония, то это хорошо, если важен чай, то это плохо. Если важен чай, то его и нужно ставить на первое место.

Удивительно что тебя не смутил тип результата комбинирования стакана и чая. Главное поставить вперед перед "мешать" этакое сужение контекста.
Re: https://github.com/aplib/PathInfo.cs#pathinfocs
От: matumba  
Дата: 22.06.13 10:26
Оценка:
Здравствуйте, grosborn, Вы писали:

G>Это враппер для System.IO.Path, File, Directory, их полный 100% порт в объект PathInfo и дополнительные плюшки.


Ненужно абсолютно. Сэкономьте силы для более полезных вещей.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.