WEBVTT
00:00:00.300 --> 00:00:06.250
Welcome everyone to another episode of Dynamics Corner, the podcast where we dive deep into all things Microsoft Dynamics.
00:00:06.250 --> 00:00:16.753
Whether you're a seasoned expert or just starting your journey into the world of Dynamics 365, this is your place to gain insights, learn new tricks and reviewing the reviews of code.
00:00:16.753 --> 00:00:18.385
I'm your co-host, chris.
00:00:19.580 --> 00:00:20.263
And this is Brad.
00:00:20.263 --> 00:00:23.873
This episode is recorded on August 1st 2024.
00:00:23.873 --> 00:00:25.463
Chris, chris, chris.
00:00:25.463 --> 00:00:27.289
Reviewing of code.
00:00:27.289 --> 00:00:29.724
What is the reviewing of code?
00:00:29.724 --> 00:00:32.268
Do you know what the reviewing of code is?
00:00:32.268 --> 00:00:42.244
Well, today we had the opportunity to speak with two amazing guests to talk all about code reviews, clean code and several other points With us.
00:00:42.244 --> 00:00:45.412
Today we spoke with Natalie Karalik and Stephen Martin.
00:00:45.412 --> 00:01:01.680
Good afternoon.
00:01:01.801 --> 00:01:02.161
Hello, I'm fine.
00:01:02.161 --> 00:01:04.602
How are you Doing very well?
00:01:04.602 --> 00:01:06.885
Thank you, good afternoon Hello.
00:01:06.944 --> 00:01:07.885
I'm fine, how are you Doing?
00:01:07.885 --> 00:01:08.385
Very well, thank you.
00:01:08.406 --> 00:01:11.608
Good morning, good morning, good afternoon Stefan and Natalie.
00:01:11.608 --> 00:01:12.909
Great to see you.
00:01:12.909 --> 00:01:14.811
I've been looking forward to talking with you both.
00:01:14.811 --> 00:01:17.653
I have a lot of things I'd like to talk with you about.
00:01:17.653 --> 00:01:30.468
You know, I hear a lot about source control management, hear a lot about test automation, hear a lot about pipeline CICD, but one thing that comes in with the source code source control management.
00:01:30.468 --> 00:01:31.852
I hear people use different terms.
00:01:31.852 --> 00:01:37.091
Maybe we can get into that a little bit as well, but one of the things is code reviews.
00:01:37.091 --> 00:01:49.054
You know, everyone talks about let's do code reviews, let's talk about pull requests, let's talk about a number of different things, and I thought who else could we talk to about code reviews and clean code than the two of you?
00:01:49.054 --> 00:01:57.230
So, before we jump into that conversation, though, would you mind telling everyone who's listening a little bit about yourselves?
00:01:57.230 --> 00:01:58.712
We can start with Natalie.
00:02:00.614 --> 00:02:01.736
Yeah, hello everybody.
00:02:01.736 --> 00:02:03.602
So my name is Nathalie Karolak.
00:02:03.602 --> 00:02:14.010
I'm located in Germany, working for Cosmo Consult as a programmer for solutions published to the AppSource, so this is my main focus.
00:02:14.010 --> 00:02:18.033
I'm doing this since quite a long time already.
00:02:18.033 --> 00:02:25.225
I'm in the business since 2006 and I'm also a Microsoft MVP for business solutions, and I'm also a Microsoft MVP for.
00:02:25.246 --> 00:02:25.750
Business Solutions.
00:02:25.750 --> 00:02:27.019
That's right, congratulations.
00:02:27.019 --> 00:02:32.650
Fantastic Congrats you had received that recently, and also this is your second time speaking with us.
00:02:32.650 --> 00:02:43.930
We were fortunate and lucky enough to have you speak with us early on while we're still trying to figure all this out, so we appreciate your support and speaking with us then and also returning to speak with us again.
00:02:43.930 --> 00:02:46.242
Stefan sir, how are you doing?
00:02:47.967 --> 00:02:48.968
Yeah, thanks, I'm doing good.
00:02:48.968 --> 00:03:15.031
Hello everyone, I'm Stefan and I've been working with NAV since I started with NAV actually, so many folks as of today are not familiar with NAV anymore, so I want to point that out With NAV 2016, so not quite as long as Natalie, and I am originally from Germany.
00:03:15.031 --> 00:03:37.228
I'm now located in Poland for almost a year now and I'm working as a freelance developer, so mostly doing coding stuff, but then again all the as Brad already mentioned all the stuff that comes with us going through pipelines and code reviews and clean coding and stuff excellent, great.
00:03:37.247 --> 00:03:39.901
And you also have the BC coding stream which I like to watch.
00:03:39.901 --> 00:03:42.687
Unfortunately, I see that you had moved it over to YouTube.
00:03:42.687 --> 00:03:46.186
I have to try to figure out the timing on that, but that's.
00:03:46.186 --> 00:03:47.829
I appreciate seeing that.
00:03:47.829 --> 00:03:48.912
It's weird.
00:03:48.912 --> 00:03:52.991
Sometimes I just put it on and play it and just watch when I'm working or do whatever.
00:03:52.991 --> 00:03:55.087
So it's nice to have stuff like that.
00:03:55.087 --> 00:03:57.769
I kind of feel like I'm in the office with you or something.
00:03:59.501 --> 00:04:00.383
Well, that's the intention.
00:04:01.228 --> 00:04:03.526
Yes, well, the intention worked.
00:04:03.526 --> 00:04:10.268
I'm sure many others listen to it or watch it, and if they don't, um, I suggest they do so.
00:04:10.268 --> 00:04:31.086
When it comes to code reviews, um, and I deal with it, I get asked this often, even within you know, when I'm working, because we're talking, okay, well, we're going to write code, we're going to do a pull request, now someone's going to do a code review, and what is a code review, and what should someone do during a code review?
00:04:31.086 --> 00:04:34.225
Because that's what I get asked and there's some basic stuff I can say.
00:04:34.225 --> 00:04:36.846
Well, you know, I look at some of the simple things.
00:04:36.846 --> 00:04:38.725
So, what is a code review?
00:04:38.725 --> 00:04:42.312
What should a code reviewer do?
00:04:42.312 --> 00:04:51.620
What should a code reviewer do?
00:04:51.620 --> 00:04:52.523
What should a code reviewer look for?
00:04:52.543 --> 00:04:55.629
These are all the questions I have, so we'll hopefully get to them in the conversation.
00:04:55.629 --> 00:04:57.333
So what are your thoughts with that?
00:04:57.333 --> 00:05:02.682
Natalie, I know you work with code reviewers quite a bit, yeah, so if I should start, maybe I start with what it is not supposed to be.
00:05:02.682 --> 00:05:10.047
I simply get a formula called a pull request where I simply hit the approve button and that's it.
00:05:11.180 --> 00:05:22.189
My task as a reviewer is to look at the code, to check what is possible, at least within a short time, at least looking at it directly in the pull request itself.
00:05:22.189 --> 00:05:24.271
I could also download the old branch and check it all in the pull request itself.
00:05:24.271 --> 00:05:29.132
I could also download the old branch and check it all in my development environment, but this is something that I, for example, do not do.
00:05:29.132 --> 00:05:34.541
However, I want to check formal stuff.
00:05:34.541 --> 00:05:45.211
I want to see that code applies to certain conventions, to style guides, to style guides in order to help us to read the code easily.
00:05:45.951 --> 00:06:16.187
And the other task I have but it's not always possible is to also validate actually code, to look out for maybe errors or even just spelling mistakes, whatever it can be so simple things, but sometimes you're lucky and if you have a good reviewer, he or she can also point you to real logical bugs that even a test did not discover earlier.
00:06:16.187 --> 00:06:23.334
That's the ideal part, but at least you have the formal stuff, because this is the easiest thing to do and usually doesn't cost too much time.
00:06:23.334 --> 00:06:35.572
Yeah, but also it's always a question of how much you go into detail, but maybe this is something that Stefan first can talk about as well.
00:06:37.242 --> 00:06:37.644
Stefan Hoferlund.
00:06:37.644 --> 00:06:41.988
Yeah well, code reviews it's such a huge topic we could probably talk for hours straight about this.
00:06:41.988 --> 00:06:52.016
It really depends how you yeah what kind of change you're reviewing, I think, especially with how much you go into detail.
00:06:52.016 --> 00:07:08.827
If I'm just looking at a small change, which also should receive reviews, I think, in my opinion, then you can maybe go a little bit more into details, or maybe you don't need to go into details at all because you can look through it in a few minutes and there is nothing special going on.
00:07:08.827 --> 00:07:19.509
And I probably go into detail for certain parts of code changes, of a feature change or something, when I feel the need to it.
00:07:19.509 --> 00:07:33.129
And then I sometimes also download the code onto my machine to be able to really do code navigation and stuff, to really look through the code change, yeah, and then other changes really don't need much detail.
00:07:34.521 --> 00:07:35.363
I had another thought.
00:07:35.363 --> 00:07:52.862
What was it discovered was during code reviews that I saw a colleague, maybe not as familiar with Microsoft's code base, rewriting stuff or functionality that's already implemented in some of their helper code units.
00:07:52.862 --> 00:07:57.312
So it was really a possibility to point that out to them.
00:07:57.312 --> 00:08:04.687
So they learned code units, new code units from the base of the system app and reuse that and could get rid of some custom code.
00:08:04.687 --> 00:08:07.952
Yeah, so that's also a good thing.
00:08:08.673 --> 00:08:09.834
Very important point indeed.
00:08:12.279 --> 00:08:14.004
That is a big point and it goes with.
00:08:14.004 --> 00:08:23.610
You hit a couple points with the comments that you made and you touched upon maybe who should be doing the code review.
00:08:23.610 --> 00:08:38.711
Touched upon maybe who should be doing the code review because I also like to believe that code reviews can also be a learning experience or a teaching experience for someone, because I've had some individuals go through the code review experience that were new to AL development.
00:08:38.711 --> 00:08:48.769
Not necessarily to the code review purpose for, you know, validating the code, necessarily, but looking through it they were able to learn new things by looking at some code that others had created.
00:08:48.769 --> 00:08:52.433
So that's one aspect that I like about the code reviews.
00:08:52.433 --> 00:08:58.460
So they were doing it, not necessarily, like I said, for the approval process, but it was more of a training process.
00:09:01.347 --> 00:09:20.109
So your points, stefan, about learning the Microsoft-based code units or the base library, is important because so many things have been added, or so many new methods, so many new code units have been added, that a lot of developers do recreate that unintentionally, you know, unintentional duplication of what Microsoft already has.
00:09:20.109 --> 00:09:28.812
So being able to have multiple people look at it give some good insight and also provide the feedback with it.
00:09:28.812 --> 00:09:37.513
I like your approach Natalie too of what it is not, and it's one of those daunting tasks as well, because it does take time to do it.
00:09:37.513 --> 00:09:51.110
So the size of the code review matters as well, because I've seen pull requests with hundreds of files and I've looked at it and I just scratched my head and I'm like, do I just click approve or do I have to go through all of these changes Sometimes?
00:09:51.129 --> 00:09:51.551
you have to.
00:09:52.320 --> 00:09:57.706
Yeah, that's one thing to keep into consideration, I think, is the size of the code review.
00:09:57.706 --> 00:10:02.629
So, with that, what is your take on who should be doing the code review?
00:10:02.629 --> 00:10:12.044
Is it a senior developer, a developer functional consultant type, or or how do you if you fit the code review in the process?
00:10:13.467 --> 00:10:23.922
ideally everybody, but of course, this is not the way how we live it, due to organizational restrictions, maybe also permissions, whatever.
00:10:23.922 --> 00:10:29.474
It's a question of how your pull requests are actually set up in your environment.
00:10:29.474 --> 00:10:39.899
For example, we are using DevOps and we have some policies attached, branches that define that we have to create pull requests for everything.
00:10:39.899 --> 00:11:03.331
All of them have to be reviewed by at least one external let's say second developer, and this is very, very useful in my opinion, and I also really see the progress and quality since we switched from CIL to AL and this whole request approach.
00:11:03.331 --> 00:11:04.312
With code reviewing.
00:11:04.312 --> 00:11:10.528
You can learn so much on both sides really and prevent many mistakes, so glad.
00:11:13.301 --> 00:11:24.743
Now you had mentioned CAL back in the old you know the older versions of NAV and how the objects were embedded within the application, within the object designer.
00:11:24.743 --> 00:11:25.513
So the objects were built within the application, within the object designer.
00:11:25.513 --> 00:11:28.216
So the objects were built as part of the application.
00:11:28.216 --> 00:11:36.451
So keeping track of changes and doing code reviews if anybody did code reviews back then were extremely difficult.
00:11:36.451 --> 00:11:40.191
I know I used to export the text files, just to track changes.
00:11:40.659 --> 00:11:51.955
I had PowerShell scripts set up just to export the text files and then each day load them into a repository, so we could see the difference of what it changed, because it was very difficult in that environment to do it.
00:11:51.955 --> 00:12:02.500
So I'm happy to see that with AL we moved forward to Visual Studio Code and having separate files to build these extensions Exactly.
00:12:02.542 --> 00:12:09.120
So I suppose none of us is missing these old times I'm not missing it for one moment at all.
00:12:09.240 --> 00:12:13.491
So, finally, even doing since the 2016, so you had the opportunity to experience that as well too.
00:12:13.491 --> 00:12:16.948
Um, and it was similar process back all the way.
00:12:16.948 --> 00:12:23.323
If you go way back to in the vision when it first started, it was the same concept, other than the rotator, all the way up through.
00:12:23.323 --> 00:12:24.928
So so we had some challenges.
00:12:24.928 --> 00:12:31.630
So it's refreshing, and it's also depending upon when someone started working with it.
00:12:31.630 --> 00:12:40.133
It is a learning experience, or someone needs to adapt to the changes of the way things used to be done in Cal versus where they are with AL.
00:12:40.133 --> 00:12:44.667
And you mentioned one thing spelling mistakes.
00:12:44.667 --> 00:12:54.620
I'm famous for making a couple of those, by the way.
00:12:54.620 --> 00:12:56.427
With those Spelling mistakes, how do you determine it's a spelling mistake?
00:12:56.427 --> 00:12:59.337
And I did see a topic recently that someone spoke about is which language someone should code in.
00:12:59.337 --> 00:13:10.052
So that would actually, I think, would attribute to what constitutes a spelling mistake, because if someone's doing a code review and they're determining if the word's spelled correctly, what is your thoughts on that?
00:13:14.105 --> 00:13:15.410
My take on that is really simple.
00:13:15.410 --> 00:13:32.802
I have a VS Code extension that checks it and if it yells at me, I review that and that would be the benefit of actually downloading the the branch to have uh, um yeah, helper tools locally to help with the code review and spelling mistakes, and that that extension would be one of them.
00:13:32.802 --> 00:13:35.951
And whenever it's it's blue, it's an info.
00:13:35.951 --> 00:13:52.379
Then I I look at it and I usually keep some of the warnings that it spits out in the, either in my user settings or in the workspace settings, as exceptions, because sometimes abbreviations are treated as a spelling mistake, although they are not.
00:13:52.379 --> 00:13:58.602
But it does a really good job also with camera casing and everything to pick the words up and check everything correctly.
00:13:59.004 --> 00:14:03.917
So that really helps a lot which extension is that that you use for that?
00:14:03.917 --> 00:14:05.100
That sounds helpful.
00:14:06.062 --> 00:14:06.904
I would need to check.
00:14:06.904 --> 00:14:10.837
From the top of my head I don't know, but yeah.
00:14:15.697 --> 00:14:16.480
Can you repeat that please?
00:14:18.368 --> 00:14:19.272
Sorry, the spell checker.
00:14:19.902 --> 00:14:20.623
Oh, the spell checker.
00:14:20.623 --> 00:14:23.971
Okay, so the spell checker extension?
00:14:23.971 --> 00:14:26.600
Does it work with any language, or just english?
00:14:28.043 --> 00:14:31.009
there are extensions like additional extensions per language.
00:14:31.211 --> 00:14:39.154
I think english is base and then not you, you can load multiple languages and create your own libraries.
00:14:39.154 --> 00:14:51.495
Um, I've activated for american english and british english because because I have to develop some elements really in British English for a very specific application and this really works.
00:14:51.495 --> 00:14:53.947
So it has different libraries.
00:14:55.320 --> 00:15:01.792
Well, that's one I know many people use it and I work with many that use it and I haven't.
00:15:01.792 --> 00:15:12.345
But I think I'm going to start as soon as we're done with this, just to see, I'm afraid, I think think sometimes to see what comes up with it, but we'll see you really didn't use it yet?
00:15:12.345 --> 00:15:15.631
No, no, no, no.
00:15:15.631 --> 00:15:18.860
Do you believe that all these years?
00:15:20.101 --> 00:15:22.025
how can you survive any day like that?
00:15:24.750 --> 00:15:25.293
I've made it.
00:15:25.293 --> 00:15:41.390
I've made it, but I have I know many use it because I end up sometimes seeing in the pull request the dictionaries where they add words, as you had mentioned to you know, as the info for the words that they want to accept with the spelling.
00:15:41.390 --> 00:15:42.846
So I know others use it, which is good.
00:15:42.846 --> 00:15:59.767
So, with the code review and the code review process you had mentioned what it's not and looking for structural changes and coded changes how do you base it?
00:15:59.767 --> 00:16:15.370
What do you base it on as far as when you look at these you had mentioned structural changes and content Is it based on just experience or are there certain standards that you follow as far as like a library or documented somewhere?
00:16:17.201 --> 00:16:26.971
In my personal opinion, I try to stick to the Microsoft standards of what they are using in their base apps the base app.
00:16:26.971 --> 00:16:45.315
Plus and this is very important in the newer repositories like BC apps for the system application and the business foundation app, because other apps who depend on us or Microsoft.
00:16:45.315 --> 00:16:47.899
They should not switch between language styles.
00:16:47.899 --> 00:16:55.206
They should find the same style of code to attach to to read it easily.
00:16:55.206 --> 00:17:02.013
But I'm not telling that I'm applying everything blindly.
00:17:02.013 --> 00:17:04.146
There is always some criticism in it.
00:17:04.146 --> 00:17:17.413
I would not really stick to everything, but at least to everything that really makes sense and makes things easier to read.
00:17:17.413 --> 00:17:18.605
That's very important to me.
00:17:18.605 --> 00:17:40.826
What I have found helpful which is not followed, for example, by Microsoft is that properties within an object or whatever are sorted alphabetically, because only that way you can easily compare what's different between two versions of a file, between two different files actually.
00:17:40.826 --> 00:17:42.791
Yeah.
00:17:43.520 --> 00:17:44.124
That I do use.
00:17:45.101 --> 00:17:48.951
Some database structure that I I do use.
00:17:49.191 --> 00:18:06.826
By the way, I use azl tools and I set up the code cleanup to go through and clean up all of the sorting because I found, like you, it's easier to do a compare of what had changed if things are sorted in a certain manner because that way they're aligned, even if you use it to sort the procedures.
00:18:06.859 --> 00:18:14.891
I know there's some topic individuals have about how do you sort the procedures with the locals and the globals or do you group them together, sort them by name?
00:18:14.891 --> 00:18:25.673
But I have found in the code review process it's helpful to have it sorted and that's a valid reason for having them sorted, in my opinion as well to make it easier to do the review.
00:18:25.673 --> 00:18:31.811
So we talked about the use of a spell checker.
00:18:31.811 --> 00:18:35.069
Stefan, you mentioned downloading the source so you could have the spell checker.
00:18:35.069 --> 00:18:37.440
What about some of the other source code analyzers?
00:18:37.440 --> 00:18:48.547
Do you think that should be part of the process, because we know, with the source code as the app source cop, for example, and there's other tools available.
00:18:48.547 --> 00:18:50.817
Do you use those as part of the code view?
00:18:50.817 --> 00:18:52.584
Do you think they're helpful as part of the code review?
00:18:53.748 --> 00:18:55.513
absolutely yes, and that's actually.
00:18:55.513 --> 00:19:01.928
I did a live stream recently about where I reviewed one of the pull requests from microsoft and that's exactly what I did.
00:19:01.928 --> 00:19:17.188
I just ran this through all the analyzers, also the the linter cop, to get all the different warnings and everything right right away in VS code and then I could just write comments where where I, where I thought it was useful.
00:19:17.188 --> 00:19:24.252
I don't need to find those things myself if there is like helper tools that can do the work for you.
00:19:24.252 --> 00:19:30.049
And I just wanted to pick up on Natalie's comment on the guidelines introduced by Microsoft.
00:19:30.049 --> 00:19:38.549
I really agree with the approach to follow them where it makes sense, and I just wanted to give an example where I actively decided to not follow their guidelines.
00:19:38.980 --> 00:19:46.586
I think there is one rule for the variable naming that it should be exactly like the type you're using, for example, for table name.
00:19:46.586 --> 00:20:00.526
That rule is disabled in all my repositories, for example, because it makes sense to a certain degree, but there's just too many false positives where I wouldn't agree to this rule, so it doesn't make sense for me.
00:20:00.526 --> 00:20:14.143
And the object naming I decided a while ago already that I just cannot afford to have spaces in my object names, since we are limited to 30 characters, so it's a pascal case for me now through like everything.
00:20:14.143 --> 00:20:15.626
Same goes for field names.
00:20:15.626 --> 00:20:31.903
Um, so I know there was a this unwritten rule since forever that it should always be with spaces and everything, and then you end up abbreviating, then you add dots and then it's all just abbreviations, so no one knows what it actually has to mean if they don't look at the caption.
00:20:31.903 --> 00:20:34.352
So that doesn't make sense for me at all.
00:20:35.296 --> 00:20:50.450
I have to chuckle because I I feel what you're saying with the naming, with the 30 characters, because even if you try to do a customer card ext, if you're doing a customer card extension right, and then you have to put in a fix on it, yeah you end up.
00:20:50.450 --> 00:20:52.727
People start I see crazy abbreviations.
00:20:52.727 --> 00:20:57.326
Wherever you get some of the longer pages you know, like the sales credit memo, they start dropping off words.
00:20:57.446 --> 00:21:11.988
Or, you know, journal gets abbreviated a number of different ways and then you add up and then like, if you're doing app source or even for PDEs, you're recommended to use a suffix, an ethics, at least a prefix or a suffix of three characters.
00:21:11.988 --> 00:21:15.630
Now I like to add two extra characters per app.
00:21:15.630 --> 00:21:16.281
I'm doing so.
00:21:16.281 --> 00:21:18.525
It's five characters already for the ethics.
00:21:18.525 --> 00:21:23.468
I'm left with 25 characters, and that's just not enough if you have spaces and all this stuff.
00:21:27.480 --> 00:21:29.343
So it's just not enough if you have spaces and all this stuff.
00:21:29.343 --> 00:21:31.183
So it's a best-case case for me for a few years already.
00:21:31.183 --> 00:21:34.186
Although your approach makes a lot of sense, I totally agree.
00:21:34.186 --> 00:21:34.567
I don't do it.
00:21:34.567 --> 00:21:43.635
I only try still, because it's just the rest of being an OG, I think it's just I'm just being used to that.
00:21:43.635 --> 00:21:45.665
Oh my God, yeah, business Central Life and OG.
00:21:45.665 --> 00:21:46.404
I think I was being used to that all my business central life.
00:21:46.404 --> 00:21:57.528
I try to create it in the old way as possible, and if the space doesn't fit there then I simply squeeze it into a Pascal case or just remove one space and then the next.
00:21:59.061 --> 00:22:11.413
I think in the end it's all about consistency, and when I work for companies which have existing code and they want me to add code into their app or just help them develop and they decide to have the spaces, I of course adjust.
00:22:11.413 --> 00:22:12.865
So this is the second part.
00:22:12.865 --> 00:22:32.701
While Microsoft sets somewhat of the base of guidelines, I think if a company agrees for themselves, like we want to do certain things differently, this should also be, um, like always used, sorry, um, so like a company-wide rule.
00:22:32.701 --> 00:22:37.770
Set of of guidelines is the next part, the next layer, in my opinion.
00:22:38.311 --> 00:22:53.645
So, yeah, when, when a company agrees to do like the old way, then of course, so that that is a good point where you can start that the rules and the guidelines and to use can be company specific, whatever fits the, the company that's managing the code or the code that's theirs.
00:22:53.645 --> 00:23:03.326
And as long as I agree with you, as long as you're consistent with what you're doing, it makes it easier for whoever's working with it or anybody who is going to come in to do the code rework with the code after.
00:23:04.569 --> 00:23:16.035
I think one good example for this is this keyword I think, natalie, you posted the point where Microsoft agreed on or said that they are going to do it everywhere.
00:23:16.035 --> 00:23:21.872
So they are going to prefix variables System app, system app Okay.
00:23:21.872 --> 00:23:23.221
System app yeah, I mean.
00:23:23.221 --> 00:23:24.567
Base app is another story.
00:23:24.567 --> 00:23:27.480
System app okay.
00:23:27.480 --> 00:23:28.142
System app yeah, I mean.
00:23:28.142 --> 00:23:28.983
Base app is another story.
00:23:29.003 --> 00:23:41.201
So they're they're going to prefix globals and functions that are in a code unit scope with this, although it's not mandatory by the language, um, and I know, or I read a lot of comments on twitter, that many people do not agree with this.
00:23:41.201 --> 00:23:53.670
So then again, if I would do a review at a company where it was agreed that they're not going to use it, then you should never use it that way, because I feel like, in my opinion, consistency is key.
00:23:53.670 --> 00:24:03.476
So if you want to use it, then use it and always, if you do not want to use it, then only use it in those specific cases where it's necessary to use it and otherwise not.
00:24:03.476 --> 00:24:10.405
In those specific cases where it's necessary to use it and otherwise not, but not switching around from code unit to code unit, because this ends up being annoying, in my opinion.
00:24:11.950 --> 00:24:15.380
It does, which brings me to another.
00:24:15.380 --> 00:24:37.390
I have so many questions about this with code, code reviews and code processes, because you hit on a key point with this being added to the language as the language evolves and functionality evolves within the language and maybe even standards evolve with the language.
00:24:37.390 --> 00:24:42.435
Some code is created in earlier versions.
00:24:42.435 --> 00:24:52.761
Some code gets created all the way back from Cal and it's a functionality that needed to be migrated or moved or upgraded to work with AL or even in earlier versions of ALs.
00:24:52.761 --> 00:24:54.001
Maybe you can pick a version.
00:24:54.001 --> 00:25:06.461
What about bringing in and using some of that new functionality where there wasn't a standard before and there is a standard now or there's new addition now?
00:25:06.461 --> 00:25:09.013
Is that something where you fix it as you go?
00:25:09.013 --> 00:25:14.371
Should someone review and update the code base to use some of these new functionality for the standards?
00:25:17.275 --> 00:26:07.777
there's the challenge with that as far as adoption of new techniques and practices with code that hasn't been around for the inception of those changes that's a delicate topic, if I understood it correctly, because there are different approaches and when it comes to such new standards as introducing this Microsoft, for example, they have decided that they want to make it the new standard and the base app, but they also decided that for pull requests that are now already created for any new lines of code they already want to edit, or at least allow it to edit now from then on, want to edit or at least allow it to edit now from then on, what they do not do is to choose one point at a time and convert everything in a separate pull request.
00:26:08.345 --> 00:26:13.755
And this is what I would actually do with my apps, which are smaller than the base app or any other standard app, obviously.
00:26:13.755 --> 00:26:23.689
But when I want to switch to another coding standard, for me this is a topic for a separate pull request which is doing only that.
00:26:23.689 --> 00:26:39.452
And I don't want to have pull requests that have one main task to change some functionality, some funky stuff but then they also format this one, some totally unrelated code line, in that object changing to this and that I don't know.
00:26:39.452 --> 00:26:41.657
This is at least in my head.
00:26:41.657 --> 00:26:45.753
This is just one big mess and I don't see the the benefit of that.
00:26:45.753 --> 00:26:47.377
How do you think about that?
00:26:49.968 --> 00:26:54.615
I think, um, it's, yeah, it's somewhat agree with you.
00:26:55.355 --> 00:27:10.848
Um, I think my take on this is really as you said it has to be a separate code pull request and it's also like, if you change it through, like adjust something throughout the whole extension, this can introduce bugs, since you change everything, you touch the code.
00:27:10.888 --> 00:27:18.355
Basically, if you change it, something can break, and so this has to be where outside of the group of developers.
00:27:18.415 --> 00:27:32.130
In my opinion, if you're working on a pretend extension, the customer needs to know they need to test again and they probably need to test everything, so it should sit somewhere in in a testing environment for some time so they have time to review whether everything still works.
00:27:32.130 --> 00:27:40.511
If you're working for a product, then well, whoever like the testers, needs to know that they potentially need to retest everything because you really touched everything.
00:27:40.511 --> 00:28:02.395
The other approach is, if you do not want to do like a major change like this, I feel like when you're working on one code unit given that you don't have like code units with thousands and thousands of lines, if you have them separately, separately created and like smaller code units, I would probably convert them one by one as I work on them.
00:28:02.395 --> 00:28:15.451
If I'm working on one topic, then I can convert that topic because I know it will be tested anyways, because I'm doing changes to that topic so that I can adjust language and bring in those new language features as we go.
00:28:18.609 --> 00:28:19.874
It's a mixed approach.
00:28:19.874 --> 00:28:21.229
I think it sounds situational.