{"id":28742,"date":"2023-01-02T09:43:51","date_gmt":"2023-01-02T04:13:51","guid":{"rendered":"https:\/\/jassweb.com\/solved\/solved-what-is-risky-about-the-following-and-how-could-you-rewrite-it-to-make-it-safer-closed\/"},"modified":"2023-01-02T09:43:51","modified_gmt":"2023-01-02T04:13:51","slug":"solved-what-is-risky-about-the-following-and-how-could-you-rewrite-it-to-make-it-safer-closed","status":"publish","type":"post","link":"https:\/\/jassweb.com\/solved\/solved-what-is-risky-about-the-following-and-how-could-you-rewrite-it-to-make-it-safer-closed\/","title":{"rendered":"[Solved] What is risky about the following and how could you rewrite it to make it safer? [closed]"},"content":{"rendered":"<p> [ad_1]<br \/>\n<\/p>\n<div id=\"answer-17115006\" class=\"answer js-answer accepted-answer js-accepted-answer\" data-answerid=\"17115006\" data-parentid=\"17114878\" data-score=\"1\" data-position-on-page=\"2\" data-highest-scored=\"0\" data-question-has-accepted-highest-score=\"0\" itemprop=\"suggestedAnswer\" itemscope itemtype=\"https:\/\/schema.org\/Answer\">\n<div class=\"post-layout\">\n<div class=\"votecell post-layout--left\"><\/div>\n<div class=\"answercell post-layout--right\">\n<div class=\"s-prose js-post-body\" itemprop=\"text\">\n<ol>\n<li>\n<p>First off, you haven&#8217;t set an explicit modifier on the class, so your are going to end up with whatever the default happens to be (if it&#8217;s in the namespace then <code>internal<\/code> or <code>private<\/code> if contained in a class). This can cause minor inconveniences at compile-time. A bigger issue might be if the default exposes the class beyond what was intended, in which case you may unwittingly allowing greater access to the class than what was expected. In any case, it&#8217;s difficult for beginner or moderate C# programmers to glance at this and know what to expect, which can be a maintainability issue.<\/p>\n<\/li>\n<li>\n<p>The biggest issue, though, is that all of your class fields are declared public. Typically you&#8217;d want to use properties to expose fields: to restrict read\/write ability, to make the fields more discoverable via reflection, to perform validation, etc. Which leads to&#8230;<\/p>\n<\/li>\n<li>\n<p>You can see that the class is named &#8220;Line&#8221; and exposes both it&#8217;s points and it&#8217;s length. A caller can currently easily change any of those values, but the other values are not updated. Length should probably be calculated property (read-only) given that changing the length would have unpredictable results (which point would change?).<\/p>\n<p>So I would rewrite this class as:<\/p>\n<pre><code>public class Line\n{\n    public Point P1 {get;set;}\n    public Point P2 {get;set;}\n    public double Length\n    {\n        get\n        {\n            return Math.Sqrt( \n                Math.Pow( P2.X - P1.X, 2 ) + \n                Math.Pow( P2.Y - P1.Y, 2 ) \n            );\n        }\n    }\n}\n<\/code><\/pre>\n<\/li>\n<li>\n<p>The mutability of this class can cause issues if there are multiple threads working together, or even in a simple case where two objects are referencing the same Line instance and one object might not aware of another&#8217;s changes (thus causing problems). If mutability is an issue, then all of the properties should be read-only:<\/p>\n<pre><code>public class Line\n{\n    private Point _p1;\n    public Point P1\n    {\n        get\n        {\n            return _p1;\n        }\n    }\n    private Point _p2;\n    public Point P2\n    {\n        get\n        {\n            return _p2;\n        }\n    }\n    private double _length;\n    public double Length\n    {\n        get\n        {\n            return _length;\n        }\n    }\n\n    public Line(Point p1, Point p2)\n    {\n        _p1 = p1;\n        _p2 = p2;\n        _length = Math.Sqrt( \n                Math.Pow( _p2.X - _p1.X, 2 ) + \n                Math.Pow( _p2.Y - _p1.Y, 2 ) \n            );\n    }\n\n}\n<\/code><\/pre>\n<\/li>\n<\/ol>\n<\/div>\n<div class=\"mt24\"><\/div>\n<\/div>\n<p>            <span class=\"d-none\" itemprop=\"commentCount\">2<\/span> <\/p><\/div>\n<\/div>\n<p>[ad_2]<\/p>\n<p>solved What is risky about the following and how could you rewrite it to make it safer? [closed] <\/p>\n","protected":false},"excerpt":{"rendered":"<p>[ad_1] First off, you haven&#8217;t set an explicit modifier on the class, so your are going to end up with whatever the default happens to be (if it&#8217;s in the namespace then internal or private if contained in a class). This can cause minor inconveniences at compile-time. A bigger issue might be if the default &#8230; <a title=\"[Solved] What is risky about the following and how could you rewrite it to make it safer? [closed]\" class=\"read-more\" href=\"https:\/\/jassweb.com\/solved\/solved-what-is-risky-about-the-following-and-how-could-you-rewrite-it-to-make-it-safer-closed\/\" aria-label=\"More on [Solved] What is risky about the following and how could you rewrite it to make it safer? [closed]\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[320],"tags":[324],"class_list":["post-28742","post","type-post","status-publish","format-standard","hentry","category-solved","tag-c"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>[Solved] What is risky about the following and how could you rewrite it to make it safer? [closed] - JassWeb<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jassweb.com\/solved\/solved-what-is-risky-about-the-following-and-how-could-you-rewrite-it-to-make-it-safer-closed\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[Solved] What is risky about the following and how could you rewrite it to make it safer? [closed] - JassWeb\" \/>\n<meta property=\"og:description\" content=\"[ad_1] First off, you haven&#8217;t set an explicit modifier on the class, so your are going to end up with whatever the default happens to be (if it&#8217;s in the namespace then internal or private if contained in a class). This can cause minor inconveniences at compile-time. A bigger issue might be if the default ... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jassweb.com\/solved\/solved-what-is-risky-about-the-following-and-how-could-you-rewrite-it-to-make-it-safer-closed\/\" \/>\n<meta property=\"og:site_name\" content=\"JassWeb\" \/>\n<meta property=\"article:published_time\" content=\"2023-01-02T04:13:51+00:00\" \/>\n<meta name=\"author\" content=\"Kirat\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kirat\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-what-is-risky-about-the-following-and-how-could-you-rewrite-it-to-make-it-safer-closed\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-what-is-risky-about-the-following-and-how-could-you-rewrite-it-to-make-it-safer-closed\\\/\"},\"author\":{\"name\":\"Kirat\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#\\\/schema\\\/person\\\/65c9c7b7958150c0dc8371fa35dd7c31\"},\"headline\":\"[Solved] What is risky about the following and how could you rewrite it to make it safer? [closed]\",\"datePublished\":\"2023-01-02T04:13:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-what-is-risky-about-the-following-and-how-could-you-rewrite-it-to-make-it-safer-closed\\\/\"},\"wordCount\":305,\"publisher\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#organization\"},\"keywords\":[\"c++\"],\"articleSection\":[\"Solved\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-what-is-risky-about-the-following-and-how-could-you-rewrite-it-to-make-it-safer-closed\\\/\",\"url\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-what-is-risky-about-the-following-and-how-could-you-rewrite-it-to-make-it-safer-closed\\\/\",\"name\":\"[Solved] What is risky about the following and how could you rewrite it to make it safer? [closed] - JassWeb\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#website\"},\"datePublished\":\"2023-01-02T04:13:51+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-what-is-risky-about-the-following-and-how-could-you-rewrite-it-to-make-it-safer-closed\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-what-is-risky-about-the-following-and-how-could-you-rewrite-it-to-make-it-safer-closed\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/solved-what-is-risky-about-the-following-and-how-could-you-rewrite-it-to-make-it-safer-closed\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[Solved] What is risky about the following and how could you rewrite it to make it safer? [closed]\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#website\",\"url\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/\",\"name\":\"JassWeb\",\"description\":\"Build High-quality Websites\",\"publisher\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#organization\",\"name\":\"Jass Web\",\"url\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/jassweb.com\\\/wp-content\\\/uploads\\\/2021\\\/02\\\/jass-website-logo-1.png\",\"contentUrl\":\"https:\\\/\\\/jassweb.com\\\/wp-content\\\/uploads\\\/2021\\\/02\\\/jass-website-logo-1.png\",\"width\":693,\"height\":132,\"caption\":\"Jass Web\"},\"image\":{\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/#\\\/schema\\\/person\\\/65c9c7b7958150c0dc8371fa35dd7c31\",\"name\":\"Kirat\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/wp-content\\\/litespeed\\\/avatar\\\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1777008400\",\"url\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/wp-content\\\/litespeed\\\/avatar\\\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1777008400\",\"contentUrl\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/wp-content\\\/litespeed\\\/avatar\\\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1777008400\",\"caption\":\"Kirat\"},\"sameAs\":[\"http:\\\/\\\/jassweb.com\"],\"url\":\"https:\\\/\\\/jassweb.com\\\/solved\\\/author\\\/jaspritsinghghumangmail-com\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"[Solved] What is risky about the following and how could you rewrite it to make it safer? [closed] - JassWeb","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/jassweb.com\/solved\/solved-what-is-risky-about-the-following-and-how-could-you-rewrite-it-to-make-it-safer-closed\/","og_locale":"en_US","og_type":"article","og_title":"[Solved] What is risky about the following and how could you rewrite it to make it safer? [closed] - JassWeb","og_description":"[ad_1] First off, you haven&#8217;t set an explicit modifier on the class, so your are going to end up with whatever the default happens to be (if it&#8217;s in the namespace then internal or private if contained in a class). This can cause minor inconveniences at compile-time. A bigger issue might be if the default ... Read more","og_url":"https:\/\/jassweb.com\/solved\/solved-what-is-risky-about-the-following-and-how-could-you-rewrite-it-to-make-it-safer-closed\/","og_site_name":"JassWeb","article_published_time":"2023-01-02T04:13:51+00:00","author":"Kirat","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kirat","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jassweb.com\/solved\/solved-what-is-risky-about-the-following-and-how-could-you-rewrite-it-to-make-it-safer-closed\/#article","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/solved-what-is-risky-about-the-following-and-how-could-you-rewrite-it-to-make-it-safer-closed\/"},"author":{"name":"Kirat","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31"},"headline":"[Solved] What is risky about the following and how could you rewrite it to make it safer? [closed]","datePublished":"2023-01-02T04:13:51+00:00","mainEntityOfPage":{"@id":"https:\/\/jassweb.com\/solved\/solved-what-is-risky-about-the-following-and-how-could-you-rewrite-it-to-make-it-safer-closed\/"},"wordCount":305,"publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"keywords":["c++"],"articleSection":["Solved"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/jassweb.com\/solved\/solved-what-is-risky-about-the-following-and-how-could-you-rewrite-it-to-make-it-safer-closed\/","url":"https:\/\/jassweb.com\/solved\/solved-what-is-risky-about-the-following-and-how-could-you-rewrite-it-to-make-it-safer-closed\/","name":"[Solved] What is risky about the following and how could you rewrite it to make it safer? [closed] - JassWeb","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/#website"},"datePublished":"2023-01-02T04:13:51+00:00","breadcrumb":{"@id":"https:\/\/jassweb.com\/solved\/solved-what-is-risky-about-the-following-and-how-could-you-rewrite-it-to-make-it-safer-closed\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jassweb.com\/solved\/solved-what-is-risky-about-the-following-and-how-could-you-rewrite-it-to-make-it-safer-closed\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jassweb.com\/solved\/solved-what-is-risky-about-the-following-and-how-could-you-rewrite-it-to-make-it-safer-closed\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jassweb.com\/solved\/"},{"@type":"ListItem","position":2,"name":"[Solved] What is risky about the following and how could you rewrite it to make it safer? [closed]"}]},{"@type":"WebSite","@id":"https:\/\/jassweb.com\/solved\/#website","url":"https:\/\/jassweb.com\/solved\/","name":"JassWeb","description":"Build High-quality Websites","publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jassweb.com\/solved\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/jassweb.com\/solved\/#organization","name":"Jass Web","url":"https:\/\/jassweb.com\/solved\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/","url":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","contentUrl":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","width":693,"height":132,"caption":"Jass Web"},"image":{"@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31","name":"Kirat","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1777008400","url":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1777008400","contentUrl":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1777008400","caption":"Kirat"},"sameAs":["http:\/\/jassweb.com"],"url":"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/"}]}},"_links":{"self":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/28742","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/comments?post=28742"}],"version-history":[{"count":0,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/28742\/revisions"}],"wp:attachment":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/media?parent=28742"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/categories?post=28742"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/tags?post=28742"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}