The Wiert Corner – irregular stream of stuff

Jeroen W. Pluimers on .NET, C#, Delphi, databases, and personal interests

  • My badges

  • Twitter Updates

  • My Flickr Stream

  • Pages

  • All categories

  • Enter your email address to subscribe to this blog and receive notifications of new posts by email.

    Join 1,839 other subscribers

Archive for the ‘.NET’ Category

Cyclomatic Complexity of switch case statement – Stack Overflow

Posted by jpluimers on 2019/06/12

For my archive: [WayBack/Archive] Cyclomatic Complexity of switch case statement – Stack Overflow.

Ultimate reference: [WayBack/Archive] NIST Special Publication 500-235: Structured Testing: A Testing Methodology Using the Cyclomatic Complexity Metric

Via: [WayBack/Archive] I have a question regarding Cyclometric Complexity… IF versus CASE… – David Hoyle – Google+

–jeroen

Posted in .NET, C#, Conference Topics, Conferences, Delphi, Development, Event, Software Development | Leave a Comment »

How to Design Early Returns in C++ (Based on Procedural Programming) – Fluent C++

Posted by jpluimers on 2019/05/15

One more thing to take away from Procedural Programming: It’s Back? It Never Went Away – Kevlin Henney [ACCU 2018] – YouTube was explained in [WayBack] How to Design Early Returns in C++ (Based on Procedural Programming) – Fluent C++.

Though in C++, it applies to all programming languages that stem from a procedural background (Pascal, C#, Java, golang, to name just a few).

The article is about keeping an if/else-if/else tree, even when they can be removed becomes some of their bodies perform an early return, as

In C++, as well as in other languages, the return keyword has two responsibilities:

  • interrupting control flow,
  • yielding a value.

It basically comes down to this argument:

Essentially, the argument for Code #1 is that you need to know less to understand the structure of the code.

Indeed, if we fold away the contents of the if statements, Code #1 becomes this:

The structure of the code is very clear. There are 4 different paths based on the year, they’re independent from each other, and each path will determine the boolean result of the function (if it doesn’t throw an exception).

Now let’s see how Code #2 looks like when we fold away the if statements:

And now we know much less. Do the if statements contain a return? Maybe.

Do they depend on each other? Potentially.

Do some of them rely on the last return false of the function? Can’t tell.

With Code #2, you need to look inside of the if statement to understand the structure of the function. For that reason, Code #1 requires a reader to know less to understand the structure. It gives away information more easily than Code #2.

–jeroen

via [WayBack] Kevlin Henney – Google+: How to Design Early Returns in C++ (Based on Procedural Programming) – Fluent C++

Posted in .NET, C, C#, C++, Conference Topics, Conferences, Delphi, Development, Event, Software Development | Leave a Comment »

Microsoft Visual Studio – Wikipedia

Posted by jpluimers on 2019/05/09

Like there was never an Office 13.0, there was no Visual Studio 13.0: see the below table from Microsoft Visual Studio – Wikipedia: History

This influences tooling that searches for specific versions of Visual Studio or MSBuild (which has been available since Visual Studio 8.0 and up: MSBuild – Wikipedia: History).

Product name Codename Version
number
Supported .NET
Framework versions
Supported .NET
Core versions
Release date
Visual Studio 2019 Unknown 16.0 To be announced To be announced To be announced
Visual Studio 2017 Dev15 15.0 3.5 – 4.7 1.0-1.1, 2.0 March 7, 2017
Visual Studio 2015 Dev14 14.0 2.0 – 4.6 1.0 July 20, 2015
Visual Studio 2013 Dev12 12.0 2.0 – 4.5.2 N/A October 17, 2013
Visual Studio 2012 Dev11 11.0 2.0 – 4.5.2 N/A September 12, 2012
Visual Studio 2010 Dev10Rosario 10.0 2.0 – 4.0 N/A April 12, 2010
Visual Studio 2008 Orcas 9.0 2.0, 3.0, 3.5 N/A November 19, 2007
Visual Studio 2005 Whidbey 8.0 2.0, 3.0 N/A November 7, 2005
Visual Studio .NET 2003 Everett 7.1 1.1 N/A April 24, 2003
Visual Studio .NET (2002) Rainier 7.0 1.0 N/A February 13, 2002
Visual Studio 6.0 Aspen 6.0 N/A N/A June 1998
Visual Studio 97 Boston 5.0 N/A N/A February 1997

–jeroen

Posted in .NET, Continuous Integration, Development, msbuild, Software Development, Visual Studio and tools | Leave a Comment »

Visual Studio direct download links

Posted by jpluimers on 2019/05/07

For my link archive:

–jeroen

Posted in .NET, Development, Software Development, Visual Studio and tools, vscode Visual Studio Code | Leave a Comment »

No, Visual Studio Community 2017 is not a 30 day trial – via Stack Overflow

Posted by jpluimers on 2019/04/30

Visual Studio Community 2017 needs a license renewal every ~30 days with a Microsoft account: [WayBack] Visual Studio Community 2017 is a 30 day trial? – Stack Overflow.

This means it is not a trial, but it does not a Microsoft account, and communicate with it every ~30 days which you can get at [WayBack] Microsoft account | Sign In or Create Your Account Today.

Messages you can get:

  • “We could not download a license. Please check your network connection or proxy settings” – meaning: sign in with a Microsoft account by clicking “Add an account…”
  • “We could not download a license, Please ensure your accounts are authenticated.” – meaning you have to click “Reenter your credentials”

–jeroen

Posted in .NET, Development, Software Development, Visual Studio 2017, Visual Studio and tools | Leave a Comment »

Should you convert your Visual Basic .NET project to C#? Why and why not… | Tim Anderson’s IT Writing

Posted by jpluimers on 2019/04/23

Since I get this question every now and then: [WayBackShould you convert your Visual Basic .NET project to C#? Why and why not… | Tim Anderson’s IT Writing.

Via [WayBack] Should you convert your Visual Basic .NET project to C#? Why and why not… https://www.itwriting.com/blog/11089-should-you-convert-your-visual-basic-net-… – Ondrej Kelle – Google+

–jeroen

Posted in .NET, C#, C# 6 (Roslyn), Development, Software Development, VB.NET | Leave a Comment »

Draft – .NET Glossary Diagram – Scott Hanselman

Posted by jpluimers on 2019/04/10

By now this should be out of [WayBackDraft – .NET Glossary Diagram – Scott Hanselman: a list of common terms to describe various parts of the .NET ecosystem.

He has a nice list of sentences where each term is used.

I’ll try to use them myself as well, so I gave it a start at paulcbetts/refit: The automatic type-safe REST library for Xamarin and .NET.

–jeroen

Posted in .NET, C#, Development, F#, Software Development, VB.NET, Visual Studio and tools | Leave a Comment »

Detecting if a debugger is present is different from detecting if an IDE is present.

Posted by jpluimers on 2019/04/04

I have seen this happen in various environments: people wanting to detect if their debugger is present, but trying to detect their IDE, or vice versa.

Similar reasoning is for detecting for being running on a console, or your project having been built to run on a console.

People use these decisions, for instance to determine if their application should behave as a service, or as a regular process.

Ways to determine the various permutation points:

  • Running inside a debugger: use the [WayBackIsDebuggerPresent function (which can be true, even if Delphi DebugHook stays zero).
  • Check for the IDE: tricky; as IDEs have different behaviour over time. For Delphi, check for any TAppBuilder Window class with the [WayBack] FindWindow function.
  • Compiled for console: for Delphi check IsConsole, for .NET I could not find good information.
  • Running on a console: check if you can allocate a handle to stdout
  • Running as a service: check the hosting assembly or hosting process

Related links:

–jeroen

Posted in .NET, Delphi, Development, Software Development, Windows Development | Leave a Comment »

paulcbetts/refit: The automatic type-safe REST library for Xamarin and .NET

Posted by jpluimers on 2019/04/03

This is so cool: [WayBack] paulcbetts/refit: The automatic type-safe REST library for Xamarin and .NET. It’s  inspired by Square’s [WayBack] Retrofit library which does the same for Java.

They basically allow you to use attributes on interfaces to define a type-safe wrapper around any REST interface, then instantiate a connection to it for making calls.

No more manual HttpClient fiddling!

Since it requires only .NET 1.4, you can basically run it on any platform as it’s supported covered by the implementations .NET Core, Mono and the full .NET Framework.

Quite a lot of projects already use it; I got there via the first link:

–jeroen

Via: [WayBack] Exploring refit, an automatic type-safe REST library for .NET Standard https://www.hanselman.com/blog/ExploringRefit… – Jeroen Wiert Pluimers – Google+

Posted in .NET, C#, Development, Java, Java Platform, Software Development | Leave a Comment »

A while ago, Lars Fosdal was on a .NET and C# link spree. Some of his links are here

Posted by jpluimers on 2019/03/27

–jeroen

Posted in .NET, Development, Software Development | Leave a Comment »