13.12.2015, 09:12 | #1 |
Участник
|
mfp: X++ in AX7: Internal keyword
Источник: http://blogs.msdn.com/b/mfp/archive/...-internal.aspx
============== internal is a new keyword in X++. It has the same semantics as in C#. When you mark a class or method as internal, then it can only be accessed from within the model where it is defined. internal class MyInternalClass { internal void myInternalMethod() { } } Notice, you can define internal methods on public classes too. THIS POST APPLIES TO MICROSOFT DYNAMICS AX7 TECHICAL PREVIEW; IS PROVIDED AS-IS AND CONFERS NO RIGHTS. ============== Источник: http://blogs.msdn.com/b/mfp/archive/...-internal.aspx
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору. |
|
13.12.2015, 12:38 | #2 |
Участник
|
Прелестно... особенно с учетом того, что обновления стандартного приложения AX 2012 R3 поставляются мелкими моделями. Способ поставки обновлений изменится, или это - фича сугубо для ISV?
|
|
|
За это сообщение автора поблагодарили: mazzy (2), MikeR (3). |
14.12.2015, 03:45 | #3 |
NavAx
|
Да ладно. Исходники ведь останутся видны. Если очень нужно, закомментишь в верхнем слое, всего и делов.
__________________
Isn't it nice when things just work? |
|
14.12.2015, 09:05 | #4 |
Участник
|
Дело не в том, что можно изменить стандартный код, если понадобится, а в том, что заметная часть изменений в языке X++, о которых пишет mfp, делается в угоду сблжения языка с C# без явной потребности в изменениях со стороны X++. А судя по обсуждениям 7-ки, новой мантрой в разработке как раз становится "
Может быть, приложение из монолитного пытаются сделать более модульным, может быть, в следующей версии появятся пространства имен или что-то в этом духе, или часть кода перестанут поставлять в исходниках, и ради этого сейчас готовят почву, вводя необходимые языковые возможности. Тогда логичнее было бы явно обозначить вектор развития, а потом уже рассказывать про частные изменения в языке. Но читая про все эти новшества, на сакраментальный вопрос "Что там есть для меня?" я не могу найти сколь-нибудь позитивного ответа. В общем, как по мне, все нынешние изменения Microsoft делает для себя, а не на пользу клиентам/партнерам/ISV, отсюда и некоторый мой скепсис. Вот в 2012-й введение моделей, а также возможности подписывать их и самостоятельно генерировать для них лицензионные коды очень помогло тем же ISV. |
|
14.12.2015, 09:46 | #5 |
Участник
|
Вообще говоря, ценность internal не в том, чтобы поставить железобетонный забор и никого не пускать, а в том, чтобы отделить публичный API от особенностей реализации: поставщик может сказать, что вот это он обещает не менять (ну или менять только по очень уважительной причине), а вот это он изменит как хочет. Пользователь может понять как ему строить модификации чтобы свести работу по обновлению к минимуму.
|
|
14.12.2015, 10:04 | #6 |
Участник
|
|
|
14.12.2015, 10:11 | #7 |
Участник
|
|
|
14.12.2015, 10:43 | #8 |
Участник
|
|
|
14.12.2015, 10:54 | #9 |
Участник
|
Цитата:
и 3) Как без internal предотвратить неумышленное использование особенностей реализации с учетом того, что (2) для того, чтобы создать экземпляр интерфейса все равно нужен класс. |
|
14.12.2015, 11:04 | #10 |
Участник
|
Цитата:
пойми и меня - для внутренних классов совсем не обязательно использовать интерфейсы. достаточно обычных классов. internal - не нужен, дядя Вова. http://coub.com/view/138x2 но если так хочется, и если уж пошли по пути public-полей. то и фиг с ними. |
|
14.12.2015, 11:09 | #11 |
Участник
|
Цитата:
Интерфейсы кое-где, например, могут быть удобнее тем, что позволяют множественное наследование. |
|
|
За это сообщение автора поблагодарили: EVGL (1). |
14.12.2015, 11:16 | #12 |
Участник
|
Цитата:
интерфейсы - это публичный контракт. что не является публичным контрактом - не обязательно выражать через интерфейсы. https://ru.wikipedia.org/wiki/%D0%98...BD%D0%B8%D0%B5) http://habrahabr.ru/post/30444/ и так далее... вводить еще одну сущность для обозначения "вот это публичный контракт" - можно. но лучше сделать более удобными интерфейсы. |
|
14.12.2015, 11:40 | #13 |
Участник
|
Я не говорю, что это не так.
Я говорю, что он должен являться публичным контрактом класса но может являться особенностью реализации модуля. Например USB является публичным интерфейсом компьютера, а AGP является интерфейсом для его внутренней реализации, но публичным для видеокарты и материнской платы. Цитата:
вводить еще одну сущность для обозначения "вот это публичный контракт" - можно.
но лучше сделать более удобными интерфейсы. |
|
14.12.2015, 11:45 | #14 |
Участник
|
Цитата:
Т.е. хотя Peter Villadsen не рекомендует использование pre- и post-event handlers, я считаю, что лучше использовать их где только можно, хотя бы на методах, параметры и назначение которых вряд ли изменится в будущем, типа системных xRecord.validateField. Последний раз редактировалось Stitch_MS; 14.12.2015 в 11:49. |
|
14.12.2015, 11:50 | #15 |
Участник
|
Цитата:
бгггг. если реально интересно поищи/почитай по ключевым словам "наследование нарушает инкапсуляцию" а если просто похоливарить - то таки да, ты победил, конечно. плюс можно почитать по ключевым словам "Инверсия презумпции" например, http://los123.livejournal.com/210100.html |
|
14.12.2015, 12:41 | #16 |
Участник
|
Ты сказал, что интерфейсов достаточно для того, чтобы отделить публичные члены неймспейсов от приватных.
Я прошу привести пример где все публичные члены были бы интерфейсами (иначе как-то придется вводить публичные и непубличные классы). Цитата:
если реально интересно поищи/почитай по ключевым словам "наследование нарушает инкапсуляцию"
|
|
|
За это сообщение автора поблагодарили: mazzy (2). |
14.12.2015, 12:44 | #17 |
Moderator
|
Цитата:
1. Партнеры забирают 70-90% бюджета проекта, при этом нихера не делают. В конце концов - ведь внедрение - это только галочки расставить и может печатные формы подправить. 2. Если установить все в облаке - и саму аксапту и их микрософтовский чудо-конфигуратор в LCS -то нужда в партнерах почти отпадет и Микрософт сможет срубить больше бабла на лицензиях. 3. Поскольку обновления буду устанавливаться автоматически, то аксапта не будет иметь номера версии, и все клиенты всегда будут работать на последнем хотфиксе. Ну накрайняк - слегка заплатят каким-нить фрилансерам за апгрейд печатных форм. ..... 5. Profit! В общем - как мало, в сущности, микрософт знает о добых феях.... P.S. Это я к тому что бесполезно рассуждать о стратегии Микрософта. Это броуновское движение. Вот попробуют они поработать с их новым подходом к рынку и придется им корректировать представления... Последний раз редактировалось fed; 14.12.2015 в 12:52. |
|
|
За это сообщение автора поблагодарили: mazzy (2), Vadik (1), gl00mie (1). |
14.12.2015, 13:46 | #18 |
Модератор
|
|
|
14.12.2015, 15:46 | #19 |
Участник
|
Цитата:
Цитата:
My current team has separate environments for development, check-in testing, scenario testing, stress testing, cross-division integration, partner integration, certification, and production. That’s eight different environments — and we’re planning to build out a preproduction environment next year.
What kind of fools build out and maintain useless environments? The kind who got burned building enterprise software. Large businesses rely on enterprise software — it’s got to work or they won’t buy it. Once they buy it, they own it. You don’t get to fix enterprise software anytime you want. That’s right, not even with security patches. Remember, enterprise paychecks depend on having the software run smoothly. Software changes represent risk to an enterprise business. If the software doesn’t work, work well, and continue working well, enterprises businesses aren’t buying it. And they’ll tell you when they are darn well ready to accept a patch. An entire generation of Microsoft engineers learned the hard way that you can’t release software until the code is fully tested. There are no “retries” in enterprise software. Цитата:
Let’s recap. There’s no place like production. You need a development environment to run a small set of automated check-in tests, a test environment to run preliminary acceptance and stress testing to help avoid catastrophic failures, and production. Anything more is superfluous.
There’s no place like production. The problem becomes configuring production to permit the testing and certifying of prerelease code. The solution is called “continuous deployment.” The concept is simple: deploy multiple builds to production, and use custom routing to direct traffic as desired. It’s like a source control system for regulating services instead of source files. |
|
|
За это сообщение автора поблагодарили: Logger (3). |
14.12.2015, 16:04 | #20 |
Участник
|
Цитата:
но речь идет о том, что "понимание" должно отобразиться в бизнес-стратегии, в договорах, в прайс-листах, наконец. а вот с этим как-то... посмотрим. |
|