بستگی داره هدف شما از اینکه سورس برنامه رو مخفی نگه دارید چی باشه.
اگر بخاطر امنیت است، یعنی اینکه مثلا کسی نتونه از برنامهء شما سوء استفاده بکنه و مختلش کنه (مثلا کارکرد سروری که برنامهء شما باهاش تبادل اطلاعات میکنه رو مختل کنه)، معمولا این نشان دهندهء «امنیت از طریق تیرگی» است که راهکار حرفه ای نیست، یعنی نشون میده اصل الگوریتم برنامه از نظر امنیتی ضعیفه و ما سعی داریم این ضعف ها رو از دید دیگران پنهان کنیم (مثل جارو کردن آشغال ها به زیر فرش!)، و البته اغلب چنین چیزی امنیت واقعی و کافی رو تامین نمیکنه و تنها درمورد نفوذگرهای کم توان یا کم انگیزه کافیه.
از دیدگاه امنیت اصولی و حرفه ای، امنیت برنامه در درجهء اول باید چنان طبق روشهای علمی و دقیق و محکم باشه که برای تامین امنیتش نیازی به پنهان کردن الگوریتم و مشخصات فنیش نباشه. مثلا این همه برنامه های بازمتن که هستن اگر قرار بود با در دسترس بودن سورس اونها امنیت نداشته باشن که نمیشد.
در علم امنیت مدرن تنها چیزهایی که بطور معمول باید پنهان بشن، چیزهایی مثل کلیدهای رمزنگاری هستن.
البته بعد از اینکه الگوریتم خود برنامه امنیت اصولی داشت، اگر توجیه و صرف کافی داشت میشه از لایه های افزوده مثل تیرگی هم برای محکم کاری و امنیت چندلایه استفاده کرد.
ولی یک وقت هست هدف شما از پنهان کردن سورس، جلوگیری از کپی و استفادهء غیرمجاز ابداعات و ایده ها یا کل برنامهء شماست. اون بحثش فرق میکنه.
ولی مثلا میخوای آدرس وبی که دیتای برنامه رو بهش ارسال میکنی مخفی بمونه، خب اینطور چیزها رو با مخفی کردن سورس هم نمیشه مخفی کرد، چون با یک اسنیفر میشه اینها رو فهمید.